第六次热身赛---坤坤的操作数

 题意如上。

我们分四种情况讨论。

1.c = d,且不为0,则我们进行一次操作1就可以直接做到,需要一次操作。

2.c = d,且为0,则无需操作。

3.c + d 为偶数,则说明c和d要么都是偶数或者奇数,对于全是奇数或者全是偶数,c和d的差值一定是2*n,假设一个数c=4,d=6,目标达到(5,5),差值为2*1,这样的话,我们可以让c减去1,d加上1达到(5,5),若c=4,d=5,那么无论如何都达不到(5,5)。对于奇数同理,假设一个数c=3,d=5,目标达到(4,4),我们可以让c减1,d加1达到(4,4),而c=3,d=4则无论如何都达不到(4,4)。

4.c + d 为奇数,那么一定达不到。就像第三点所说的c=3,d=4和c=4,d=5。

那么对于第三种情况,我们只需要从初始(0,0),进行操作1,加到目标对的中间值,比如(3,5)中间值为(3+5)/2=4,我们就第一次操作是让a和b都加上4变成了(4,4),然后用4算出跟目标对的任意一个数的差值,比如3,那么差值为1,同理5差值也为1,让(4,4)将差值作为k进行操作2或3,根据这个例子,显然我们进行操作3。那么我们使用了两步,达到目标。

#include<stdio.h>
int main() {
	int a, b;
	while (scanf("%d",&a)!=EOF) {
		scanf("%d",&b);
		if (a == b && a) { // 情况1
			printf("1\n");
		}
		else if (a == b && a == 0) { // 情况2
			printf("0\n");
		}
		else if ((a + b) % 2 == 0) { // 情况3
			printf("2\n");
		}
		else {
			printf("-1\n"); // 情况4
		}
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值