#define PRINT{for (i = 0; i < 100; i++)printf("%d ", ar[i]);printf("\n\n");} // 0 关着的 // 非0 开着的 int main(void) { int ar[100] = {0}; int i; int times; int n; int t; printf("n = ?: "); scanf("%d", &n); for (i = 0; i < 100; i++) ar[i] = 1; for (t = 1; t < (n % 100); t++) { for (i = 0; i < 100; i += (t + 1)) ar[i] = !ar[i]; PRINT } for (i = 0, times = 0; i < 100; i++) if (ar[i] != 0) times++; printf("%d", times); return 0; }
} vector<int> result; while(result.size() < 500) { t = heap.extract_min(); i = GetIndex(t); // so that the number t comes from array a[i]. pseudo-code writes easy but might need non-trivial amount of work to implement this if(index[i] < a[i].size()) heap.insert(a[i][index[i]++]); result.push_back(t); }