# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1257648 | kargneq | Hack (APIO25_hack) | C++20 | 0 ms | 0 KiB |
#include <vector>
#include "hack.h"
int hack() {
const long long M = 1000000;
vector<long long> x(M);
iota(x.begin(), x.end(), 1);
long long C = collisions(x); // one query
for (long long q = 0; q <= M/2; ++q) {
long long denom = q * (q + 1) / 2; // C(q+1,2)
if (denom == 0) continue; // q=0 impossible when n>=2 and M>=1
long long numer = M * q - C;
if (numer <= 0) continue;
if (numer % denom) continue; // must divide
long long n = numer / denom;
if (n >= 2 && M / n == q) // floor(M/n) == q
return (int) n;
}
// If you’re paranoid, fall back to smaller M or different set, but this loop finds it.
return 2; // unreachable for valid tests
}