Codeforces R624(Div.3)A 题解

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

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

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

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

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

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

最后,上核心代码!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;//最后统一换行,减少码量
作者

CBW2007

发布于

2020-03-06

更新于

2023-01-07

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论