取石子游戏(信息学奥赛一本通-T1218)
生活随笔
收集整理的這篇文章主要介紹了
取石子游戏(信息学奥赛一本通-T1218)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目描述】
有兩堆石子,兩個人輪流去取。每次取的時候,只能從較多的那堆石子里取,并且取的數目必須是較少的那堆石子數目的整數倍,最后誰能夠把一堆石子取空誰就算贏。
比如初始的時候兩堆石子的數目是25和7。
25 7 --> 11 7 --> 4 7 --> 4 3 --> 1 3 --> 1 0
????選手1取????選手2取????選手1取????選手2取????選手1取
最后選手1(先取的)獲勝,在取的過程中選手2都只有唯一的一種取法。
給定初始時石子的數目,如果兩個人都采取最優策略,請問先手能否獲勝。
【輸入】
輸入包含多數數據。每組數據一行,包含兩個正整數a和b,表示初始時石子的數目。
輸入以兩個0表示結束。
【輸出】
如果先手勝,輸出"win",否則輸出"lose"
【輸入樣例】
34 12
15 24
0 0
【輸出樣例】
win
lose
思路:使用歐幾里得輾轉相除法即可
【源程序】
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #define N 101 using namespace std; int main() {int m,n;int temp;int flag;while(scanf("%d%d",&m,&n)!=EOF&&m&&n){flag=1;if(m<n){temp=m;m=n;n=temp;}while(m/n==1){temp=m;m=n;n=temp%n;flag=-flag;}if(flag==1)cout<<"win"<<endl;elsecout<<"lose"<<endl;}return 0; }?
總結
以上是生活随笔為你收集整理的取石子游戏(信息学奥赛一本通-T1218)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bad Hair Day(POJ-325
- 下一篇: 基础算法 —— 高精度计算 —— 高精度