17-取石子-hdu1846(巴什博奕)
生活随笔
收集整理的這篇文章主要介紹了
17-取石子-hdu1846(巴什博奕)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
http://acm.hdu.edu.cn/showproblem.php?pid=1846
Brave Game
Time Limit: 1000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 13658????Accepted Submission(s): 9249
今天,大家選擇上機(jī)考試,就是一種勇敢(brave)的選擇;這個短學(xué)期,我們講的是博弈(game)專題;所以,大家現(xiàn)在玩的也是“勇敢者的游戲”,這也是我命名這個題目的原因。
當(dāng)然,除了“勇敢”,我還希望看到“誠信”,無論考試成績?nèi)绾?#xff0c;希望看到的都是一個真實的結(jié)果,我也相信大家一定能做到的~
各位勇敢者要玩的第一個游戲是什么呢?很簡單,它是這樣定義的:
1、??本游戲是一個二人游戲;
2、??有一堆石子一共有n個;
3、??兩人輪流進(jìn)行;
4、??每走一步可以取走1…m個石子;
5、??最先取光石子的一方為勝;
如果游戲的雙方使用的都是最優(yōu)策略,請輸出哪個人能贏。 Input 輸入數(shù)據(jù)首先包含一個正整數(shù)C(C<=100),表示有C組測試數(shù)據(jù)。
每組測試數(shù)據(jù)占一行,包含兩個整數(shù)n和m(1<=n,m<=1000),n和m的含義見題目描述。 Output 如果先走的人能贏,請輸出“first”,否則請輸出“second”,每個實例的輸出占一行。 Sample Input 2 23 2 4 3 Sample Output first second Author lcy Source ACM Short Term Exam_2007/12/13 Recommend lcy???|???We have carefully selected several similar problems for you:??1847?1850?1848?2147?1849? 思路:每個人可以去1到m個,則可以知道如果n==m+1時便已知是勝局,對于m+1無論你取走多少,我都可一次拿走剩下的所有,故可以獲勝; 又因為對于任意的n都有:n = K * (m + 1) + x 所以,如果x不為零,則先手即可取走x來維持m+1局面,獲取勝利。 #include <iostream> using namespace std;int main(){int n, t, m;cin >> t;while(t--){cin >> n >> m;if(n % (m + 1) >= 1){cout << "first" << endl;}else{cout << "second" << endl;}}return 0; }
轉(zhuǎn)載于:https://www.cnblogs.com/zhumengdexiaobai/p/8473668.html
總結(jié)
以上是生活随笔為你收集整理的17-取石子-hdu1846(巴什博奕)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Graph_Master(连通分量_Po
- 下一篇: jdk监控与故障处理工具