1. 程式人生 > >hdu 2516 取石子游戲 (博弈論)

hdu 2516 取石子游戲 (博弈論)

方法:

通過找規律可以發現斐波拉契數列為必敗點。

PS: 自己算結果的時候算出了幾次, 後面慢慢算才看出這個規律。。

程式碼:

#include <cstdio>
#include <cstring>
#include <climits>
__int64 F[50];


int main()
{
	__int64 max= INT_MAX;
	F[1]= 2, F[2]= 3;
	int tot= 2;
	while(F[tot]< max)
	{
		F[tot+1]= F[tot] + F[tot-1];
		tot++;
	}
	int n;
	while(scanf("%d",&n)!=EOF && n)
	{
		int f= 1;
		for(int i= 1; i<= tot; i++)
			if(F[i]== n)
				f= 0;
		if(f)
			printf("First win\n");
		else
			printf("Second win\n");			
	}
	return 0;
}

相關推薦

hdu 2516 石子 (博弈論)

方法: 通過找規律可以發現斐波拉契數列為必敗點。 PS: 自己算結果的時候算出了幾次, 後面慢慢算才看出這個規律。。 程式碼: #include <cstdio> #include <cstring> #include <climits>

HDU 2516 石子博弈論

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

HDU 2516石子(巴什博弈)

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

HDU 2516 石子 Fib博弈

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

hdu 2516 石子(water)

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

HDU 2516 石子 [斐波那契博弈]

博弈問題 巴士博弈 威爾夫博弈 斐波那契博弈 尼姆博弈 HDUXXX<-點選此處進入連結 公平組合博弈 取石子游戲 Time Limit: 2000/1000 MS (Java/Others)

hdu 2516 石子(組合遊戲)

題目大意:略。 解題思路:K倍動態減法,K=2的情況為斐波那契數列。 #include <cstdio> #include <cstring> #include <

HDU 2516 石子(斐波那契博弈)

當且只當n是一個斐波那契數的時候是必敗態。可以寫出幾組資料找規律就可以發現這個規律。 證明如下: 就像“Wythoff博弈”需要“Beatty定理”來幫忙一樣,這裡需要藉助“Zeckendorf定理

HDU 2516 石子 (斐波那契博弈)

大神部落格:http://blog.csdn.net/acm_cxlove/article/details/7835016 #include <iostream> #include <cstdio> #include <cstring>

hdu 2516 石子(博弈)

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

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

HDU石子 威佐夫博弈

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

HDU-1527-石子【威佐夫博弈】

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

HDU 1527 石子 威佐夫博弈

題意:中文 思路:威佐夫博弈 必敗態為 (a,b ) ai + i = bi     ai = i*(1+sqrt(5.0)+1)/2   這題就求出i然後帶人i和i+1判斷是否成立 以下轉自網上某總結 有公式ak =[k(1+√5)/2],bk= ak + k  (k=

hdu 1527 石子---威佐夫博弈

取石子游戲 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 1   Accepted Submission(

Hdu 1527 石子 (威佐夫博弈)

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

2516 石子(斐波那契)

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

HDOJ 2516 石子

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

openjudge 6266石子 博弈論 c++

描述 有兩堆石子,兩個人輪流去取.每次取的時候,只能從較多的那堆石子裡取,並且取的數目必須是較少的那堆石子數目的整數倍.最後誰能夠把一堆石子取空誰就算贏. 比如初始的時候兩堆石子的數目是25和7 25 7 –> 11 7 –>