Boxes 最大公约数 http://blog.csdn.net/ahfywff/article/details/7432524
来源:互联网 发布:辩证看待人工智能 编辑:程序博客网 时间:2024/05/18 19:39
我们用(x, y)表示两个盒子里分别有x个球和y个球(不区分是哪个盒子)。假设总共有n个球,经过k步把所有球移到一个盒子里。如果反过来推的话,那么各盒子中球的个数为:
第k步: (0, n);
第k-1步:(n/2, n/2);
第k-2步:(n/4, 3n/4);
第k-3步:(n/8, 7n/8)或(3n/8, 5n/8);
第k-4步:(n/16, 15n/16)或(3n/16, 13n/16)或(5n/16, 11n/16)或(7n/16, 9n/16);
......
这样,我们就发现了规律:除(0, n)这种情况外(一步即可),若(A, B)能化成(x*c, y*c)这种形式,(c为A、B的最大公约数,x和y均为奇数且x+y=2^k,k=1,2,...)则k即为所求的最小步数,输出k;否则,输出-1。
最大公约数是左边的2*3不是下面的
http://baike.baidu.com/link?url=mmkLljBbVMlc-gYEwmhx8dCSQWu7QasBxeYlM_fSbgrTxPkH-Rl9s9tvvpd8Ei4-
<pre name="code" class="cpp">
#include<iostream>#include<cstring>using namespace std;int a,b;int gcd(int a,int b){ if(a>b) swap(a,b); int t; t=b%a; while(t) { b=a; a=t; t=b%a; } return a;}int main(){ while(cin>>a>>b) { int ans; if(a==0||b==0) //排除0 0, 1 0, 2 0这些情况 ans=0; else { int k=gcd(a,b); a=a/k; b=b/k; k=a+b; ans=0; while(k>1)//K必须大于1如果是while(k)则结果都是-1; { if(k%2==0) { ans++; k=k/2; } else { ans=-1; break; } } } cout<<ans<<endl; } return 0;}
0 0
- Boxes 最大公约数 http://blog.csdn.net/ahfywff/article/details/7432524
- http://blog.csdn.net/IBM_hoojo/article/details/5688947
- http://blog.csdn.net/chenlaic/article/details/6143235
- http://blog.csdn.net/eaglewood2005/article/details/4335052
- http://blog.csdn.net/mchp/article/details/3995970
- http://blog.csdn.net/v_july_v/article/details/6015165
- http://blog.csdn.net/masterz/article/details/6232585
- http://blog.csdn.net/perfectpdl/article/details/6442847
- http://blog.csdn.net/eroswang/article/details/1967243
- http://blog.csdn.net/zhvsby/article/details/5986645
- http://blog.csdn.net/dz45693/article/details/6183645
- http://blog.csdn.net/david_lv/article/details/5798003
- http://blog.csdn.net/zxingchao2009/article/details/6299313
- http://blog.csdn.net/zhanxinhang/article/details/6783766
- http://blog.csdn.net/ruanruoshi/article/details/935510
- http://blog.csdn.net/yming0221/article/details/6538527
- http://blog.csdn.net/yming0221/article/details/6528490
- http://blog.csdn.net/yming0221/article/details/6704079
- (BFS,状态空间优化)Holedox Moving,贪吃蛇
- 卖心率表的厂商(网上到处找的整理后得到)
- C#访问web,并处理返回值
- HDU 2024 C语言合法标识符
- meta标签
- Boxes 最大公约数 http://blog.csdn.net/ahfywff/article/details/7432524
- [Java][Android][Process] 分享 Process 执行命令行封装类
- 安卓开源项目
- Java的优点
- 两种设计模式(解藕)
- xcode两个模拟器同时开的bug
- hdu-1163-Eddy's digital Roots
- oj n
- HDOJ题目3783 ZOJ(水题)