您的位置:首页 > 大数据 > 人工智能

HDU 1848 Fibonacci again and again(SG函数)

2013-05-29 15:20 351 查看
题目链接

模版题,写错了,wa好几次。。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define LL __int64
int dp[1001];
int fib[21];
int sg(int x)
{
int flag[101],temp,i;
if(dp[x] >= 0)
return dp[x];
memset(flag,0,sizeof(flag));
for(i = 1;i <= 15&&x >= fib[i];i ++)
{
if(dp[x-fib[i]] == -1)
temp = sg(x-fib[i]);
else
temp = dp[x-fib[i]];
flag[temp] = 1;
}
for(i = 0;;i ++)
if(!flag[i])
return dp[x] = i;
}
int main()
{
int n,m,p,ans,i;
fib[1] = 1;
fib[2] = 2;
for(i = 3;i <= 15;i ++)
{
fib[i] = fib[i-1] + fib[i-2];
}
while(scanf("%d%d%d",&n,&m,&p)!=EOF)
{
if(!n&&!m&&!p) break;
memset(dp,-1,sizeof(dp));
dp[0] = 0;
ans = 0;
ans ^= sg(n);
ans ^= sg(m);
ans ^= sg(p);
if(ans)
printf("Fibo\n");
else
printf("Nacci\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: