在我的博客食用效果更佳!https://www.cbw2007.tk/articles/CF-624-div3-A-sol/,更多見在不同的網站瀏覽本站內容
原題鏈接:Problem - 1311A - Codeforces或CF1311A Add Odd or Subtract Even - 洛谷 | 計算機科學教育新生態
咱們先稍微轉一下,加上正奇數就改變了一個數的奇偶性,反之不變;而差爲奇數說明兩個數之間奇偶性不同,反之相同;另外,由於每次操作數字不限制,要多少有多少,所以我們的問題只剩下奇偶性問題。
再理一下情況:(有個typo,請見諒,如果無法加載請手動觀看)
- 這還用說嘛
- 因爲減法操作不會改變奇偶性,然而兩數奇偶性不同,就要先把a減到(與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;//最後統一換行,減少碼量