On the most recent Bleddest Div 2, I used gcd instead of mod, thinking I wouldn't get punished.
Becuase O(n^2 log 10^9) = 30 * 5000 * 5000 = 7.5 * 10^8 which should pass.
But it turns out that the C++ built in gcd uses the Euclidian Algorithm:
int gcd (int a, int b) {
return b ? gcd (b, a % b) : a;
}
Hacked Submission: https://codeforces.me/contest/2283/submission/397357386
So the next time you want to compute GCD, use Stein’s algorithm:
int gcd(int a, int b) {
if (!a || !b)
return a | b;
unsigned shift = __builtin_ctz(a | b);
a >>= __builtin_ctz(a);
do {
b >>= __builtin_ctz(b);
if (a > b)
swap(a, b);
b -= a;
} while (b);
return a << shift;
}
I get the easy AC after getting hacked :( https://codeforces.me/contest/2283/submission/397490186
So what do you guys think about the built in gcd?



