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;
}

猜你喜欢

转载自blog.csdn.net/qq_40240576/article/details/82989680