B - Fox Dividing Cheese CodeForces - 371B
题意:把两块饼可以变成原来1/2/ , 1/3 , 1/5,问你多少步可以变成质量相同的两块。
题解:看这个数由多少2、3、5组成,统计2、3、5个数的同时不断用n去除以它们,除完以后得到的a , b如果不相同就不行,不过相同,那么2、3、5个数的差就是步骤
#include<bits/stdc++.h>
#include<cstring>
using namespace std;
int main()
{
int a,b,flag = 0;
int arr[] ={2,3,5};
int ca[3] = {0},cb[3] = {0};
scanf("%d%d",&a,&b);
if(a == b) flag =1;
for(int i = 0 ; i < 3 ; i++)
{
while(a%arr[i] == 0)
{
ca[i]++;
a/=arr[i];
}
while(b%arr[i] == 0)
{
cb[i]++;
b/=arr[i];
}
}
if(a!=b) printf("-1");
else
{
int num = 0;
for(int i = 0 ; i < 3 ; i++)
num+=abs(ca[i] - cb[i]);
printf("%d\n",num);
}
return 0;
}