在我的博客食用效果更佳!https://www.cbw2007.tk/articles/CF-624-div3-A-sol/,更多见在不同的网站浏览本站内容
原题链接:Problem - 1311A - Codeforces或CF1311A Add Odd or Subtract Even - 洛谷 | 计算机科学教育新生态
咱们先稍微转一下,加上正奇数就改变了一个数的奇偶性,反之不变;而差为奇数说明两个数之间奇偶性不同,反之相同;另外,由于每次操作数字不限制,要多少有多少,所以我们的问题只剩下奇偶性问题。
再理一下情况:(有个typo,请见谅,如果无法加载请手动观看)
- 这还用说嘛
- 因为减法操作不会改变奇偶性,然而两数奇偶性不同,就要先把a减到 b − 1 b-1 b−1( b − 1 b-1 b−1与a奇偶性相同,其实不一定减1,减任意一个奇数都行),再加个1(减多少,加多少)
- 因为减法操作不会改变奇偶性,而且两数奇偶性相同,就直接把a减到b
- 因为加法操作会改变奇偶性,而且两数奇偶性不同,就直接把a加到b
- 因为加法操作会改变奇偶性,而加到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;//最后统一换行,减少码量