为什么NKOJ的题交JAVA会被keyword卡System,还不能用python水高精度……
题目分析
回归正题,由于本题数据范围 0 ≤ A , B ≤ 1 0 10000 0 \le A,B \le 10^{10000} 0≤A,B≤1010000两个 10000 10000 10000位的整数算GCD,所以用高精度欧几里得GCD的话会使得算法时间复杂度不够优秀(虽然各位Dalao都会卡常过题,但本蒟蒻还是希望给大家带来较好的算法)
这里为了可以更有惊无险的AC本题,我采用了辗转相除Pro优化法,其内容如下:(可能是环境不一样,在另外一边看起来很好看,粘过来难看死了)
g c d ( a , b ) = { a [ a = b ] g c d ( b , a ) [ a < b ] g c d ( a , b 2 ) [ a 奇数 b 偶数 ] g c d ( a 2 , b ) [ a 偶数 b 奇数 ] g c d ( a 2 , b 2 ) × 2 [ a , b 均为偶数 ] g c d ( a − b , b ) ; [ a , b 均为奇数 ] \mathrm{gcd}(a,b)= \left\{\begin{matrix} a \ \ \ [a=b]\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ \mathrm{gcd}(b,a)\ \ \ [a<b]\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ \mathrm{gcd}(a,\frac{b}{2})\ \ \ [a奇数b偶数]\ \ \ \ \ \ \ \ \ \ \ \\ \mathrm{gcd}(\frac{a}{2},b)\ \ \ [a偶数b奇数]\ \ \ \ \ \ \ \ \ \ \ \\ \mathrm{gcd}(\frac{a}{2},\frac{b}{2}) \times 2\ \ \ [a,b均为偶数]\ \ \ \\ \mathrm{gcd}(a-b,b);\ \ \ [a,b均为奇数]\ \ \ \ \end{matrix}\right. gcd(a,b)=⎩
⎨