51nod 巧克力 1429

题意:

在这里插入图片描述

思路:

看到这道题的时候,真的就是什么都想不起来了55555

那么怎么写呢?对于a x b大小的巧克力,我们就要在a和b中分别都完全删除因子2和因子3,看剩下的部分面积是否相等,毕竟只是要求面积相等,对于长和宽没有任何的限制。。。面积不相等,则输出-1,否则就输出abs(a1 - a2) + abs(b1 - b2)

很简单的一道题,但是看到它,我真的什么都想不起来了

代码实现:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int maxn = 2e5 + 5;

int a[10];
int b[10];

int main(){
	scanf("%d%d",&a[1],&b[1]);
	scanf("%d%d",&a[2],&b[2]);
	int a1 = 0; int b1 = 0; int a2 = 0; int b2 = 0;
	for(;a[1]%2==0;a1++) a[1] = a[1] / 2;
	for(;b[1]%2==0;a1++) b[1] = b[1] / 2;
	for(;a[1]%3==0;b1++,a1++) a[1] = a[1] / 3;
	for(;b[1]%3==0;b1++,a1++) b[1] = b[1] / 3;
	for(;a[2]%2==0;a2++) a[2] = a[2] / 2;
	for(;b[2]%2==0;a2++) b[2] = b[2] / 2;
	for(;a[2]%3==0;b2++,a2++) a[2] = a[2] / 3;
	for(;b[2]%3==0;b2++,a2++) b[2] = b[2] / 3;
	if(a[1] * b[1] != a[2] * b[2]) printf("-1\n");
	else printf("%d\n",abs(a1 - a2) + abs(b1 - b2));
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值