中医药 Problem J: 不存在的泳池

题意:输入两个数,将他们除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;
}

猜你喜欢

转载自blog.csdn.net/qq_42079027/article/details/81161719