AYITACM第三週周賽 E 盒子遊戲

2021-07-11 17:41:35 字數 867 閱讀 2504

description

有兩個相同的盒子,其中乙個裝了n個球,另乙個裝了乙個球。alice和bob發明了乙個遊戲,規則如下:alice和bob輪流操作,alice先操作每次操作時,遊戲者先看看哪個盒子裡的球的數目比較少,然後清空這個盒子(盒子裡的球直接扔掉),然後把另乙個盒子裡的球拿一些到這個盒子中,使得兩個盒子都至少有乙個球。如果乙個遊戲者無法進行操作,他(她)就輸了。下圖是乙個典型的遊戲: 

面對兩個各裝乙個球的盒子,bob無法繼續操作,因此alice獲勝。你的任務是找出誰會獲勝。假定兩人都很聰明,總是採取最優策略。

input

輸入最多包含300組測試資料。每組資料僅一行,包含乙個整數n(2<=n<=10^9)。輸入結束標誌為n=0。

output

對於每組資料,輸出勝者的名字。

sample input

2 

3 4

0

sample output

alice 

bob

alice

hint

分析:這個題可以看做是找規律的題,alice和bob都想贏(以下簡稱a和b),題目中還給出了當球的數量分別為2,3,4時分別是誰贏,每次都是a先操作,a肯定也想自己贏,5可以分成(1,4)(2,3),a肯定會分成(2,3),這樣b只會輸不會贏,以此類推,總結出來乙個規律,2^n-1是bob贏其餘全是alice贏。

#include#includeint main()

}if(j==0)

printf("alice\n");

else printf("bob\n");

}return 0;

}

dfs 剪枝(暑假集訓第三週周測E)

題目dfs題目,但是感覺上就可能會超時。所以加了兩個很巧妙的剪枝優化。嚶嚶嚶,過會兒補上,現在有點心累,不想動。好的,一會兒以後就是一天之後,我寫完了 include using namespace std int n,s 奇異數列的長度和奇異數列的和 int pr 30 int sum 0 int...

藍橋杯備賽第三週

按我自己的理解遞迴就是同乙個函式的迴圈執行。1 找重複 找到一種劃分方法 找到遞推公式或者等價轉接都是父問題轉化為求解子問題 2 找變化的量 變化的量通常要作為引數 3 找出出口 找到邊界值 斐波那契數列 static int fib int n insertsort arr,k k 1 int x...

暑假集訓第三週週三賽 STL F 水果

f 水果 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status practice hdu 1263 description 夏天來了 好開心啊,呵呵,好多好多水果 joe經營著乙個不大的水果店.他認為...