杭电1848 Fibonacci again and again(博弈-打表)

Fibonacci again and again

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 5093    Accepted Submission(s): 2127

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、  最先取光所有石子的人为胜者;

假设双方都使用最优策略,请判断先手的人会赢还是后手的人会赢。

Input

输入数据包含多个测试用例,每个测试用例占一行,包含3个整数m,n,p(1<=m,n,p<=1000)。

m=n=p=0则表示输入结束。

Output

如果先手的人能赢,请输出“Fibo”,否则请输出“Nacci”,每个实例的输出占一行。

Sample Input

1 1 1
1 4 1
0 0 0

Sample Output

Fibo
Nacci

博弈入门参考1

博弈入门参考2

将这两个博客看看 sg函数应该差不多明白点了
/*
看了半天博客,,迷迷糊糊,略懂,先上打表模板吧
Time:2014-8-24 23:14
*/
#include<stdio.h>
#include<string.h>
const int MAX=1010;
int f[MAX],sg[MAX],hash[MAX];
void Get_SG(int n){
	memset(sg,0,sizeof(sg));
	for(int i=1;i<=n;i++){
		memset(hash,0,sizeof(hash));
		for(int j=1;f[j]<=i;j++){//有i个石子,比i大的不用考虑
			hash[ sg[ i-f[j] ] ]=1;
		}
		for(int j=0;j<=n;j++){//mex中未出现的最小非负整数
			if(hash[j]==0){
			sg[i]=j;
			break;
			}
		}
	}
}
void solve(){
		f[0]=f[1]=1;
	for(int i=2;i<=16;i++)//f[15]=987 f[16]=1597到16就够了
		f[i]=f[i-1]+f[i-2];

		//printf("%d\n",f[16]);
	Get_SG(1001);
	int N,M,P;
	while(~scanf("%d%d%d",&M,&N,&P),M+N+P){
		if((sg[M]^sg[N]^sg[P])==0)
		//位运算和任何运算符同时出现时记得一定要加括号
		//郁闷……
			printf("Nacci\n");
		else
			printf("Fibo\n");
	}
}
int main(){
	solve();
return 0;
}
时间: 2024-10-03 03:24:59

杭电1848 Fibonacci again and again(博弈-打表)的相关文章

Being a Good Boy in Spring Festival(杭电1850)(尼姆博弈)

Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4894    Accepted Submission(s): 2930 Problem Description 一年在外 父母时刻牵挂 春节回家 你能做几天好孩子吗 寒假里尝试做做下面的事情吧 陪妈妈逛一次菜场 悄悄

杭电 1021 Fibonacci Again

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1021 解题思路:根据之前发现斐波那契数列的规律,即为f(n)能被3整除当且仅当n能被4整除. 于是联想到这道题目,它只是改变了f(0)和f(1)的值,肯定也一样有规律可以寻找 f(0)=7; f(1)=11; f(2)=18;能整除3 f(3)=29; f(4)=47; f(5)=76; f(6)=123;能整除3 f(7)=200; f(8)=323; f(9)=523; f(10)=846;能整

杭电1279 Stone Game(经典博弈)

Stone Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2539    Accepted Submission(s): 741 Problem Description This game is a two-player game and is played as follows: 1. There are n boxes;

Rabbit and Grass(杭电1849)(尼姆博弈)

Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2254    Accepted Submission(s): 1704 Problem Description 大学时光是浪漫的,女生是浪漫的,圣诞更是浪漫的,但是Rabbit和Grass这两个大学女生在今年的圣诞节却表现得一点都不浪漫:不去逛商场,不去

杭电 1536(尼姆博弈)

S-Nim <span size="+0"><strong><span style="font-family:Arial;font-size:12px;color:green;FONT-WEIGHT: bold">Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4479 

Hat&#39;s Fibonacci(杭电1250)

Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7854    Accepted Submission(s): 2551 Problem Description A Fibonacci sequence is calculated by adding the previous two members th

杭电 1850(尼姆博弈)

Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4649    Accepted Submission(s): 2774 Problem Description 一年在外 父母时刻牵挂 春节回家 你能做几天好孩子吗 寒假里尝试做做下面的事情吧 陪妈妈逛一次菜场 悄悄

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY

杭电ACM题目分类

杭电ACM题目分类 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028. 1029.1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092. 1093.1094.1095.1096.1097.1098.1106.1108.1157.1163.1164.1170.1194.1196. 1197.1201.1202.1205.1219.1234.123