题目描述
乐乐有两个魔法小球,上面分别有两个数字a和b,分别代表这两个小球的魔法值。乐乐喜欢平衡,所以他希望两个小球上的数字相等,为此他可以选择一个小球并对其实施若干次魔法,假设小球上的数字是a,则每次魔法,可以使得a变为a*c(c为一个正整数)。现在乐乐想知道,对于两个小球和确定值c,他可否施展魔法,从而使得最终两个小球上的数字相等,若可以,输出使得两个小球相等需要施展的魔法的最少次数,如果不行则输出-1。
输入格式
输入一个三个正整数a,b,c,分别为两个小球上的数字和确定值c。
输出格式
输出使得两个小球相等需要施展的最少魔法次数,如果不行则输出-1。
输入数据 1
3 12 2
输出数据 1
2
样例解释1
选择对第一个小球实施魔法,第一次魔法3变成6,第二次魔法6变成12,两个小球上的数字相等。
输入数据 2
14 4 2
输出数据 2
-1
样例解释2
可以发现,无论如何实施魔法,4都不可能变成14,14也不可能变成4
数据范围
1<=a,b,c<=10000
C++
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int a,b,c,cnt;
int main(){
cin>>a>>b>>c;
if(a>b) swap(a,b);
if(c==1) {
cout<<-1;
return 0;
}
for(int i=0;;i++) {
a=a*c;
cnt++;
if(a==b) {
cout<<cnt;
return 0;
}
if(a>b) {
cout<<-1;
break;
}
}
return 0;
}