1. 程式人生 > >2516 取石子游戲(斐波那契)

2516 取石子游戲(斐波那契)

題目:

Description

1堆石子有n個,兩人輪流取.先取者第1次可以取任意多個,但不能全部取完.以後每次取的石子數不能超過上次取子數的2倍。取完者勝.先取者負輸出"Second win".先取者勝輸出"First win". 

Input

輸入有多組.每組第1行是2<=n<2^31. n=0退出. 

Output

先取者負輸出"Second win". 先取者勝輸出"First win". 
參看Sample Output. 

Sample Input

2
13
10000
0

Sample Output

Second win
Second win
First win

這個博弈俗稱斐波那契博弈,簡稱FIB博弈。

原理到處都有解釋,我就不扯了,不過裡面用到的核心定理,我有解釋:斐波那契數列的齊肯多夫定理

程式碼:

#include<iostream>
#include<stdio.h>
using namespacestd;

int list[46];

int main()
{
	list[1] = 1;
	list[2] = 2;
	for (int i = 3; i <= 45; i++)list[i] = list[i - 1] + list[i - 2];
	int n;
	while (cin >>
n) { if (n == 0)break; int i = 2; for (; i <= 45; i++)if (list[i] == n) { cout << "Second win\n"; break; } if (i > 45)cout << "First win\n"; } return 0; }

相關推薦

2516 石子

題目: Description 1堆石子有n個,兩人輪流取.先取者第1次可以取任意多個,但不能全部取完.以後每次取的石子數不能超過上次取子數的2倍。取完者勝.先取者負輸出"Second win

HDU2516 石子

取石子游戲 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6162 Accepted S

石子遊戲 HDU2516博弈

裸題 左右 get code span target oid otto HR 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2516 題目: Problem Description 1堆石子有n個,兩人輪流取.先取者第1

HDU 2516石子巴什博弈

取石子游戲 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4093 Accepted S

hdu 2516 石子water

好吧,好水的! 連公式也是某位大神賜給小弟的! ~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~        ~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~

hdu 2516 石子博弈

只要列舉一下前面十幾組資料的勝負手,就可以很明顯地看出來只有菲薄數是先手輸,其他都是先手贏。 #include<stdio.h> #include<string.h> typ

HDU 2516 石子 博弈論

取石子游戲 Problem Description 1堆石子有n個,兩人輪流取.先取者第1次可以取任意多個,但不能全部取完.以後每次取的石子數不能超過上次取子數的2倍。取完者勝.先取者負輸出"

HDU 2516 石子Fibonacci博弈

問題描述 取石子游戲 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8263    Accepted S

HDU 2516 石子巴什博弈

取石子游戲 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su

【BZOJ1413】石子博弈,區間DP

題意:在研究過Nim遊戲及各種變種之後,Orez又發現了一種全新的取石子游戲,這個遊戲是這樣的: 有n堆石子,將這n堆石子擺成一排。遊戲由兩個人進行,兩人輪流操作,每次操作者都可以從最左或最右的一堆中取出若干顆石子, 可以將那一堆全部取掉,但不能不取,不能操作的人就輸了。 Orez問:對於任意給出一個初

POJ——1067 石子威佐夫博弈

有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在兩堆中同時取走相同數量的石子。最後把石子全部取完者為勝者。現在給出初始的兩堆石子的數目,如果輪到你先取,假設雙方都採取最好的策略,問最後你是勝者還是敗者。

zcmu-1113石子威佐夫博弈

1113: 取石子游戲 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 267  Solved: 128 [Submit][Status][Web Board] Description 有兩堆石子,數量任意,可以不同。遊戲開始

HD-1527-石子威佐夫博弈

Problem Description 有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在兩堆中同時取走相同

HDU1527 石子威佐夫博弈

取石子游戲 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9304    Accepted Submissio

POJ 1067 石子威佐夫博弈

題面: 取石子游戲 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36951 Accepted: 12512 Description 有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流

POJ1067 石子威佐夫博弈

題意: 中文題不解釋。 要點: 第一道博弈論題啊,這種題做過了就很好做了,程式碼很好寫。這題是威佐夫博弈判斷先手輸贏,看了一下還是很簡單的,就是記住第一個值是差值的1.618倍,注意第一個值要比第二個

hdu1257石子威佐夫博弈

取石子游戲 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5200    Accepted Submissio

杭電1527-石子威佐夫博弈

/*(威佐夫博弈)(http://baike.baidu.com/view/1952620.htm) 這不是我寫的啊! 1、在一堆石子中取走任意多顆; 2、在兩堆石子中取走相同多的任意顆; 約定取走最後一顆石子的人為贏家,求必勝策略。 兩堆石頭地位是一樣的,我們用餘下的石子數(a,b)來表示狀態,並畫在平面

POJ-1067 石子威佐夫博弈

題目連結 POJ-1067 取石子游戲 題目大意 有兩堆石子,數量分別為\(a,b\),兩個人輪流取石子。每次有兩種不同的取法:一是可以在任意的一堆中取走任意多的石子;二是可以在兩堆中同時取走相同數量的石子。最後把石子全部取完者為勝者。現在給出初始的兩

POJ 1067--石子 威佐夫博弈

取石子游戲Time Limit: 1000MSMemory Limit: 10000KTotal Submissions: 44733Accepted: 15227Description有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法