题面就是让你求两个超级大整数,求GCD
题解:
题目本意应该是出题人想考考高精度取膜
但是可以通过一种神奇的Stein算法来做
由J. Stein 1961年提出的Stein算法很好的解决了欧几里德算法中的这个缺陷,Stein算法只有整数的移位和加减法,为了说明Stein算法的正确性,首先必须注意到以下结论:gcd(a,a)=a,也就是一个数和其自身的公约数仍是其自身。gcd(ka,kb)=k gcd(a,b),也就是最大公约数运算和倍乘运算可以交换。特殊地,当k=2时,说明两个偶数的最大公约数必然能被2整除。当k与b互为质数,gcd(ka,b)=gcd(a,b),也就是约掉两个数中只有其中一个含有的因子不影响最大公约数。特殊地,当k=2时,说明计算一个偶数和一个奇数的最大公约数时,可以先将偶数除以2。----摘自百度百科
所以当这两个数都是2的倍数的时候,累乘器++,都除以2
如果任意一个是2的倍数,除以2,然后更相减损即可
答案是 结果*(1<<累乘器)
当然,可以用PYTHONac这道题
1 a,b=input(),input() 2 c=a%b 3 while c!=0L: 4 a=b 5 b=c 6 c=a%b 7 print b