[CodeForces 1141A] Game 23

题目链接:http://codeforces.com/problemset/problem/1141/A

首先,nn一定要是mm的倍数。否则就无法转换,输出-1;

然后令k=.\frac{m}{n} ,即k=.\frac{m}{n} .

将k 分解质因数,若分解结果是k=.\frac{m}{n} ,那答案就是k=.\frac{m}{n} 。

如果无法分解成k=.\frac{m}{n} ,那么输出-1。

AC代码:

#include <cstdio>

using namespace std;

int main() {
    int n,m;
    while(scanf("%d%d",&n,&m) != EOF) {
        if(m % n != 0) {
            puts("-1\n");
        } else if (n == m) {
            puts("0\n");
        } else {
            int k = m / n;
            int cnt = 0;
            while (k % 2 == 0) {
                cnt++;
                k /= 2;
            }
            while (k % 3 == 0) {
                cnt++;
                k /= 3;
            }
            if(k != 1) {
                puts("-1\n");
            } else {
                printf("%d\n",cnt);
            }
        }
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/youpeng/p/10743090.html