标签:http io ar for sp on c 代码 amp
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=2516
题目不难想出来,对于这样的博弈题,多算几个测试用例,找规律即可,2 3 5 8 13 。。。。。是必败点,
开始我我只想开一个2^31的数组,我想的太天真了,不用想是愚蠢的,开这么大干嘛,可以看看第几个斐波那契超过了2^31可以了,在枚举每一个,即可
具体看代码
先找几个斐波那契超过了2^31
#include<stdio.h>
int main(void)
{
int a[100];
int i;
a[0]=2; a[1]=3;
for(i=2;i<=100;i++)
{
a[i]=a[i-1]+a[i-2];
if(a[i]<0)
break;
}
printf("%d %d\n",a[i-1],i);
return 0;
}
可以看到
output
1836311903 44
Process returned 0 (0x0) execution time : 0.271 s
Press any key to continue.
最大的为1836311903 第44即可,所以数组开45就可以了。
看我的代码
#include<stdio.h>
int main(void)
{
int a[50];
int i,n;
a[0]=2; a[1]=3;
for(i=2;i<45;i++)
a[i]=a[i-1]+a[i-2];
while(scanf("%d",&n)==1&&n)
{
for(i=0;i<45;i++)
if(a[i]==n)
break;
if(i<45)
printf("Second win\n");
else
printf("First win\n");
}
return 0;
}
总结:
这个题最大的亮点,是判断,最大的却不超过2^31 的斐波那契在第几项。
开始,我没想到。这个可以记住的。
标签:http io ar for sp on c 代码 amp
原文地址:http://www.cnblogs.com/liudehao/p/3989345.html