题意:输入两个数,将他们除2或3,最终两个数相等,求最少处理次数。
思路:最后得到相同的那个数一定是两个数的最大公因子。
过程:先求出最大公因子,原始数分别除以最大公因子。若能化为相同,则除以最大公因子的结果除2或3可以化为一。否则输出-1。
#include<stdio.h>
int a,b;
int gcd(int x,int y) //求最大公因子的函数
{
int m;
if(y==0) m=x;
else m=gcd(y,x%y);
return m;
}
int main()
{
while(scanf("%d%d",&a,&b)!=EOF)
{
int t=gcd(a,b);
a/=t; b/=t; //同除以最大公因子,其结果 最终可除2或3化为1
int sum=0;
while(a%2==0){a/=2;sum++;}
while(a%3==0){a/=3;sum++;}
while(b%2==0){b/=2;sum++;}
while(b%3==0){b/=3;sum++;}
if(a==b) printf("%d\n",sum);
else printf("-1\n");
}
return 0;
}