您的位置:首页 > 其它

sgu 126 Boxes 数学推导(打表找规律??...)

2013-11-20 16:10 393 查看
         这题太可怕了-,。。推了一下午没推出来,看了下题解,发现只要找到(a+b) /gcd(a,b) == 2^k 中k的大小就行...另外特判下n,m为0的情况....比赛的时候真遇上这种题果然还是暴力打一堆表找规律的节奏么.........证明之类的网上有,就不在这贴了...

        #include <iostream>
#include <cstdio>
#include <algorithm>
#include <memory.h>
#include <cstring>
#include <map>
using namespace std;
typedef long long ll;
int n,m,p,q;
int gcd(int a,int b)
{
if (b==0) return a;
return gcd(b,a%b);
}
int check(int k)
{
for (int i=0; i<31; i++)
if (k==(1<<i)) return i;
return -1;
}
int main()
{
cin>>n>>m;
p=(n+m)/gcd(n,m);
if (n && m==0) cout<<0<<endl;
else cout<<check(p)<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: