zcmu-1646 盒子游戏
生活随笔
收集整理的這篇文章主要介紹了
zcmu-1646 盒子游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
E - 盒子游戲
有兩個相同的盒子,其中一個裝了n個球,另一個裝了一個球。Alice和Bob發明了一個游戲,規則如下:
Alice和Bob輪流操作,Alice先操作。每次操作時,游戲者先看看哪個盒子里的球的數目比較少,然后清空這個盒子(盒子里的球直接扔掉),然后把另一個盒子里的球拿一些到這個盒子中,使得兩個盒子都至少有一個球。如果一個游戲者無法進行操作,他(她)就輸了。下圖是一個典型的游戲:
Alice Bob Alice (5,1)----->(2,3)----->(1,2)----->(1,1)面對兩個各裝一個球的盒子,Bob無法繼續操作,因此Alice獲勝。你的任務是找出誰會獲勝。假定兩人都很聰明,總是采取最優策略。
輸入最多包含300組測試數據。每組數據僅一行,包含一個整數n(2<=n<=109)。輸入結束標志為n=0。
對于每組數據,輸出勝者的名字
Hint
思路:找規律,博弈的題目 當輸入的數等于2^i-1的時候,是Bob贏。
代碼:
#include<iostream> #include<cmath> using namespace std; int main() { int n,i; while(cin>>n&&n!=0) { int k=0; for(i=0;;i++) { if(pow(2,i)-1==n) { k=1; break; } else if(pow(2,i)-1>n) break; } if(k==1) cout<<"Bob"<<endl; else cout<<"Alice"<<endl; } return 0; }
總結
以上是生活随笔為你收集整理的zcmu-1646 盒子游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java listview用法_Java
- 下一篇: 美团面试题:Hashmap的结构,1.7