HDU 1848 Fibonacci again and again (尼姆博弈+sg函式)
Fibonacci again and again
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9062 Accepted Submission(s): 3776
Problem Description
任何一個大學生對菲波那契數列(Fibonacci numbers)應該都不會陌生,它是這樣定義的:
F(1)=1;
F(2)=2;
F(n)=F(n-1)+F(n-2)(n>=3);
所以,1,2,3,5,8,13……就是菲波那契數列。
在HDOJ上有不少相關的題目,比如1005 Fibonacci again就是曾經的浙江省賽題。
今天,又一個關於Fibonacci的題目出現了,它是一個小遊戲,定義如下:
1、 這是一個二人遊戲;
2、 一共有3堆石子,數量分別是m, n, p個;
3、 兩人輪流走;
4、 每走一步可以選擇任意一堆石子,然後取走f個;
5、 f只能是菲波那契數列中的元素(即每次只能取1,2,3,5,8…等數量);
6、 最先取光所有石子的人為勝者;
假設雙方都使用最優策略,請判斷先手的人會贏還是後手的人會贏。
F(1)=1;
F(2)=2;
F(n)=F(n-1)+F(n-2)(n>=3);
所以,1,2,3,5,8,13……就是菲波那契數列。
在HDOJ上有不少相關的題目,比如1005 Fibonacci again就是曾經的浙江省賽題。
今天,又一個關於Fibonacci的題目出現了,它是一個小遊戲,定義如下:
1、 這是一個二人遊戲;
2、 一共有3堆石子,數量分別是m, n, p個;
3、 兩人輪流走;
4、 每走一步可以選擇任意一堆石子,然後取走f個;
5、 f只能是菲波那契數列中的元素(即每次只能取1,2,3,5,8…等數量);
6、 最先取光所有石子的人為勝者;
假設雙方都使用最優策略,請判斷先手的人會贏還是後手的人會贏。
Input
輸入資料包含多個測試用例,每個測試用例佔一行,包含3個整數m,n,p(1<=m,n,p<=1000)。
m=n=p=0則表示輸入結束。
m=n=p=0則表示輸入結束。
Output
如果先手的人能贏,請輸出“Fibo”,否則請輸出“Nacci”,每個例項的輸出佔一行。
Sample Input
1 1 1
1 4 1
0 0 0
Sample Output
Fibo
Nacci
Author
lcy
Source
POINT:
先得出sg[1000],在sg[m] sg[n] sg[p] 異或。
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
#define ll long long
int fibo[30];
int sg[1010];
void init()
{
fibo[1]=1;
fibo[2]=2;
for(int i=3;i<=16;i++)
{
fibo[i]=fibo[i-1]+fibo[i-2];
}
sg[0]=0;
for(int i=1;i<=1000;i++)
{
int flag[1010];
memset(flag,0,sizeof flag);
for(int j=1;i-fibo[j]>=0;j++)
{
flag[sg[i-fibo[j]]]=1;
}
for(int j=0;;j++)
{
if(!flag[j])
{
sg[i]=j;
break;
}
}
}
}
int main()
{
init();
int a,b,c;
while(~scanf("%d %d %d",&a,&b,&c))
{
if(!(a+b+c)) break;
if((sg[a]^sg[b]^sg[c])==0) printf("Nacci\n");
else printf("Fibo\n");
}
}
相關文章
- HDU 1848 Fibonacci again and again(SG函式)AI函式
- 『杭電1848』Fibonacci again and againAI
- HDU 2509 Be the Winner (尼姆博弈)
- LightOj1296Again Stone Game(手推SG函式)AIGAM函式
- 博弈論基礎之sg函式與nim函式
- ECNU OJ 3354 領外賣(博弈-SG函式)函式
- Decade counter againAI
- If I were a boy againAI
- Trees and XOR Queries AgainAI
- 【博弈論】組合遊戲及SG函式淺析遊戲函式
- 藍橋嵌入式之 USART_AgainAI
- HDU 5795 A Simple Nim (SG函式+打表找規律)函式
- 兩個需要求 sg 函式的樹上博弈問題函式
- WEEK5|WEB Unserialize AgainWebAI
- LightOJ 1038 Race to 1 Again (簡單期望)AI
- NIM遊戲/SG函式遊戲函式
- CF1982F Sorting Problem Again 題解AI
- 矽基流動 The parameter is invalid. Please check againAI
- npm install ERR Please try running this command again as root/AdministratorNPMAI
- 【博弈論】HDU - 7216 Triangle GameGAM
- [轉載]SystemD strikes again : Unit X.mount is bound to inactive unitAI
- 解決:ChatGPT too many requests in 1 hour.Try again laterChatGPTAI
- HDU 1709 The Balance(母函式)函式
- Error: Cannot retrieve metalink for repository: epel. Please verify its path and try againErrorAI
- would dispatch back to the current handler URL [/doLogin] again. Check your ViewResolver setup!AIView
- CF1902F.Trees and XOR Queries Again-點分治、線性基AI
- hud--4251The Famous ICPC Team Again+劃分樹入門題AI
- hdu2516 斐波納契博弈
- 互動類敘事遊戲《再見 Once Again》預計夏天上線遊戲AI
- Android Studio ERROR: Installed Build Tools revision 34.0.0 is corrupted. Remove and install again using the SDK Manager.AndroidErrorUIREMAI
- Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 問題分析AI
- CentOS7 yum 報錯: Cannot retrieve metalink for repository: epel. Please verify its path and try againCentOSAI
- C語言——使用函式輸出指定範圍內的Fibonacci數C語言函式
- 博弈論:公平組合遊戲(Nim 遊戲 & SG 定理)學習筆記遊戲筆記
- 6-1 使用函式輸出指定範圍內Fibonacci數的個數函式
- Fibonacci
- 佳佳的 Fibonacci
- Fibonacci數列