BZOJ 1876 [SDOI2009] SuperGcd | PY好题
2017-11-28 17:21
253 查看
题面就是让你求两个超级大整数,求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
相关文章推荐
- [大数GCD Stein算法] BZOJ 1876 [SDOI2009]SuperGCD
- 【BZOJ】【1876】【SDOI2009】SuperGCD
- 【BZOJ 1876】 [SDOI2009]SuperGCD
- BZOJ 1876: [SDOI2009]SuperGCD
- [SDOI2009][BZOJ1876] SuperGCD|高精度|更相减损术
- bzoj 1876 [SDOI2009]SuperGCD(高精度+更相减损)
- BZOJ 1876: [SDOI2009]SuperGCD
- BZOJ 1876: [SDOI2009]SuperGCD( 更相减损 + 高精度 )
- bzoj 1876: [SDOI2009]SuperGCD (高精度+gcd)
- bzoj 1876 [SDOI2009]SuperGCD
- BZOJ 1876: [SDOI2009]SuperGCD
- 1876: [SDOI2009]SuperGCD
- 1876: [SDOI2009]SuperGCD
- BZOj-[SDOI2009]SuperGCD-Java高精度
- BZOJ1876: [SDOI2009]SuperGCD
- BZOJ1876 [SDOI2009]SuperGCD 【高精 + GCD优化】
- BZOJ 1876: [SDOI2009]SuperGCD
- [BZOJ1876][SDOI2009]superGCD(高精度)
- 【bzoj1876】[SDOI2009]SuperGCD(高精度)
- 【SDOI2009】【BZOJ1876】SuperGCD