codeforces 371B

来源:互联网 发布:js添加display none 编辑:程序博客网 时间:2024/06/16 04:32
思路:将每个数都除以2,3,5直到不能再除,如果最后数不一样就返回-1,一样就根据除的次数返回,也可以先求最大公约数,然后看剩下的是不是能被2,3,5除尽。
#include<iostream>#include<cstring>using namespace std;int ans;int x[5],y[5];int gcd(int a,int b){    if(b==0)        return a;    return gcd(b,a%b);}bool cnt(int *num,int a){    while(a%5==0)        a/=5,num[2]++;    while(a%3==0)        a/=3,num[1]++;    while(a%2==0)        a/=2,num[0]++;    if(a!=1)        return false;    return true;}int main(){    int a,b;    cin>>a>>b;    if(a==b)    {        cout<<0<<endl;        return 0;    }    int g=gcd(a,b);    a/=g;    b/=g;    memset(x,0,sizeof(x));    memset(y,0,sizeof(y));    bool flag=true;    int ans=0;    if(cnt(x,a))        ans+=x[0]+x[1]+x[2];    else flag=false;    if(cnt(y,b))        ans+=y[0]+y[1]+y[2];    else flag=false;    if(flag)        cout<<ans<<endl;    else cout<<-1<<endl;    return 0;}

0 0
原创粉丝点击