zoukankan      html  css  js  c++  java
  • HDU 1848 Fibonacci again and again

    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
    这是一个类似Nim游戏的游戏
    考虑用SG函数
    有一个结论,当前状态的SG函数集合{a1,a2,a3}
    满足a1^a2^a3=0时必败
    否则必胜
    证明:http://blog.csdn.net/strangedbly/article/details/51137432
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 int f[18],n,m,p,SG[1002],vis[1002];
     8 void getSG()
     9 {int i,j;
    10   memset(SG,0,sizeof(SG));
    11   for (i=1;i<=1000;i++)
    12     {
    13       memset(vis,0,sizeof(vis));
    14       for (j=1;j<=16;j++)
    15     if (i-f[j]>=0)
    16       vis[SG[i-f[j]]]=1;
    17     else break;
    18       for (j=0;;j++)
    19     if (vis[j]==0)
    20       {
    21         SG[i]=j;
    22         break;
    23       }
    24     }
    25 }
    26 int main()
    27 {int i,j;
    28   f[1]=1;f[0]=1;
    29   for (i=2;i<=16;i++)
    30     f[i]=f[i-1]+f[i-2];
    31   getSG();
    32   while (cin>>n>>m>>p&&(n||m||p))
    33     {
    34       if (SG[n]^SG[m]^SG[p]) printf("Fibo
    ");
    35       else printf("Nacci
    ");
    36     }
    37 }
  • 相关阅读:
    寒假一:打印沙漏
    秋季学期总结
    三位我尊敬的老师
    自我介绍
    polay计数原理
    2020-2021 ACM-ICPC, Asia Seoul Regional Contest
    2017-2018 ACM-ICPC Northern Eurasia(A.Archery Tournament)
    FTT简单入门板子
    佩尔方程最小解模板
    求组合数
  • 原文地址:https://www.cnblogs.com/Y-E-T-I/p/8390451.html
Copyright © 2011-2022 走看看