Codeforces Round #624 (Div. 3) A题【Add Odd or Subtract Even】题解

在我的博客食用效果更佳!https://www.cbw2007.tk/articles/CF-624-div3-A-sol/,更多见在不同的网站浏览本站内容

原题链接:Problem - 1311A - CodeforcesCF1311A Add Odd or Subtract Even - 洛谷 | 计算机科学教育新生态

咱们先稍微转一下,加上正奇数就改变了一个数的奇偶性,反之不变;而差为奇数说明两个数之间奇偶性不同,反之相同;另外,由于每次操作数字不限制,要多少有多少,所以我们的问题只剩下奇偶性问题。

再理一下情况:(有个typo,请见谅,如果无法加载请手动观看

  1. 这还用说嘛
  2. 因为减法操作不会改变奇偶性,然而两数奇偶性不同,就要先把a减到 b − 1 b-1 b1 b − 1 b-1 b1与a奇偶性相同,其实不一定减1,减任意一个奇数都行),再加个1(减多少,加多少)
  3. 因为减法操作不会改变奇偶性,而且两数奇偶性相同,就直接把a减到b
  4. 因为加法操作会改变奇偶性,而且两数奇偶性不同,就直接把a加到b
  5. 因为加法操作会改变奇偶性,而加到b以上后两数之差为奇数,可是只能减偶数,无解

怎么样,是不是像极了数学里令人作呕着迷的分类讨论呢?

最后,上核心代码!

if (a==b)
	cout<<0;
else if (a<b)
{
	if ((b-a)%2==0)
//		cout<<2; 这里一开始没考虑到无解,但是AC了o_O,大家自己改一改吧
	else
		cout<<1;
}
else /*(a>b)*/
{
	if ((b-a)%2==0)
		cout<<1;
	else
		cout<<2;
}
cout<<endl;//最后统一换行,减少码量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值