数学题/sgu 126 Boxes
题意
有两个盒子,一个里面有a个球,另一个有b个球。现在请你把其中一个盒子的球转移到另一个去,转移的数目是另一个盒子里球的个数。
现在问你几次能把所有球转移到一个盒子里。
分析
2k=(a+b)/gcd(a,b),k即为答案
具体怎么证得?我再研究研究0.0
Accepted Code
1 /* 2 PROBLEM:sgu 126 3 AUTHER:Rinyo 4 MEMO:数学题 5 */ 6 #include<cstdio> 7 int gcd(int a,int b){return b==0?a:gcd(b,a%b);} 8 int main() 9 { 10 int a,b; 11 scanf("%d%d",&a,&b); 12 if (a==0||b==0) {printf("0\n");return 0;} 13 long long s=(a+b)/gcd(a,b); 14 for (long long i=1;i<32;i++) 15 if ((long long)1<<i == s) 16 {printf("%lld\n",i);return 0;} 17 printf("-1\n"); 18 return 0; 19 }