#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string.h>
#include <queue>
#include <vector> //Div2(317B)
using namespace std;
/*
求最大公约数后,看两个数是否是通过除以2,3,5得到的这个公约数,是的话输出除的总次数,不是的话输出-1
两个数通过除法操作后相同的是最大公约数
*/
int gcd(int a, int b) //欧几里算法(求最大公约数-----注意a>=b)
{
if(b==0)return a;
else return gcd(b, a%b);
}
int main()
{
int a, b, k, s1, s2, flag;
while(scanf("%d%d", &a, &b)!=EOF)
{
if(a==b)
{
printf("0\n");
continue;
}
if(a>b)
k=gcd(a, b);
else k=gcd(b, a);
s1=s2=0;
a=a/k;
b=b/k;
flag=1;
while(flag)
{
flag=0;
if(a%5==0)
{
s1++;
a=a/5;
flag=1;
}
if(a%3==0)
{
s1++;
a=a/3;
flag=1;
}
if(a%2==0)
{
s1++;
a=a/2;
flag=1;
}
}
if(a!=1)
{
printf("-1\n");
continue;
}
flag=1;
while(flag)
{
flag=0;
if(b%5==0)
{
s2++;
b=b/5;
flag=1;
}
if(b%3==0)
{
s2++;
b=b/3;
flag=1;
}
if(b%2==0)
{
s2++;
b=b/2;
flag=1;
}
}
if(b!=1)
{
printf("-1\n");
continue;
}
printf("%d\n", s1+s2);
}
return 0;
}
Div2(317B)最大公约数
最新推荐文章于 2015-06-01 19:22:57 发布