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減到b1b-1b1b-1與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;//最後統一換行,減少碼量
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章