rt
众所周知,gcd 可以用辗转相除法或者直接 __gcd。
__gcd
但是昨天晚上上某数论课的课间,某位同学跟我讲了一个神奇方法(原创是一个 HNCPC 金牌得主):
int gcd(int a,int b){ while (a^=b^=a^=b%=a); return b; }
找了一道题测了一下还真的能过。
那位同学说这种做法不考虑常数的情况下跟普通的都是 log\loglog 级别,但常数极小甚至接近 000。
但是我太菜了,求大佬证这个做法的正确性还有复杂度。