bzoj 1876 [SDOI2009]SuperGCD
2016-08-15 16:11
169 查看
Description
Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比赛计算GCD。有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但是输给Sheng bill岂不是很丢脸!所以你决定写一个程序来教训他。
Input
共两行: 第一行:一个数A。 第二行:一个数B。
Output
一行,表示A和B的最大公约数。
Sample Input
12
54
Sample Output
6
HINT
对于20%的数据,0 < A , B ≤ 10 ^ 18。
对于100%的数据,0 < A , B ≤ 10 ^ 10000。
10^10000让常用的辗转相除无用武之地。其实求gcd还有另一种方法:更相减损术
第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
求gcd(260,104)
由于260和104均为偶数,首先用2约简得到130和52,再用2约简得到65和26。
此时65是奇数而26不是奇数,故把65和26 辗转相减:
65-26=39
39-26=13
26-13=13
所以,260与104的 最大公约数等于13乘以第一步中约掉的两个2,即13*2*2=52。
这样的时间复杂度是O(n)的,因为平时大多只需考虑正常范围的数,以及多组询问的要求,所以这种依靠减法的求gcd方式一直没有出现。
正解就是写个高精度的事情啦。
python大法好
Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比赛计算GCD。有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但是输给Sheng bill岂不是很丢脸!所以你决定写一个程序来教训他。
Input
共两行: 第一行:一个数A。 第二行:一个数B。
Output
一行,表示A和B的最大公约数。
Sample Input
12
54
Sample Output
6
HINT
对于20%的数据,0 < A , B ≤ 10 ^ 18。
对于100%的数据,0 < A , B ≤ 10 ^ 10000。
10^10000让常用的辗转相除无用武之地。其实求gcd还有另一种方法:更相减损术
第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
求gcd(260,104)
由于260和104均为偶数,首先用2约简得到130和52,再用2约简得到65和26。
此时65是奇数而26不是奇数,故把65和26 辗转相减:
65-26=39
39-26=13
26-13=13
所以,260与104的 最大公约数等于13乘以第一步中约掉的两个2,即13*2*2=52。
这样的时间复杂度是O(n)的,因为平时大多只需考虑正常范围的数,以及多组询问的要求,所以这种依靠减法的求gcd方式一直没有出现。
正解就是写个高精度的事情啦。
python大法好
a=(int)(input()) b=(int)(input()) while b!=0: t=a a=b b=t%b print(a)
相关文章推荐
- Linux下redis的安装
- 多文件组织多个类程序
- c#更新oracle数据库卡死
- java(优化17) 15天玩转redis之第九篇
- ASP.NET MVC5网站开发之添加\删除\重置密码\修改密码\列表浏览管理员篇2(六)
- 怪物攻击角色时,UI上箭头执行怪物的方向
- poj 1113 Wall (计算几何)
- 总结
- Http报文头部
- 如何判断一个整数是多少位
- gulp详细入门教程
- swift - 之TabBarController的用法
- tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项
- 【集训】DP & 搜索 & 线段树
- 隔壁村翠花都这么学会了SQL注入!屠龙宝刀,点击就送
- 数据库连接池(DBCP C3P0)
- POJ3026——Borg Maze
- hdu 5834 Magic boy Bi Luo with his excited tree (树形dp)
- 面试题 各种常用的默认端口号 总结
- PAT乙级(Bascic Level)1037(C++)