# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1257646 | kargneq | Hack (APIO25_hack) | C++20 | 0 ms | 0 KiB |
long long 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 n;
}
// If you’re paranoid, fall back to smaller M or different set, but this loop finds it.
return 2; // unreachable for valid tests
}