题意
http://www.nocow.cn/index.php/Translate:Sgu/126,翻译版。
思路
我是手写一些找规律,所以我也没办法细讲。
http://www.nocow.cn/index.php/Sgu/126详细题解,说是一个数论题,因为我是找规律所以代码肯定是写不严的,如果你需要严格证明请移步那边。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <iostream> #include <cstdlib> #include <algorithm> using namespace std; int main(){ long long a = 0,b = 0,sum = 0; cin >> a >> b; sum = a+b; if(a == 0 || b == 0){ cout << 0 << endl; } if(sum%2){ cout << -1 << endl; return 0; } int res = 0; long long now = min(a,b); while(now != sum/2){ if(res > 10000){ cout << -1 << endl; return 0; } res++; now *= 2; now = min(now,sum-now); } cout << res+1 << endl; return 0; } |