zoukankan      html  css  js  c++  java
  • sg函数

    推荐博客 :http://www.cnitblog.com/weiweibbs/articles/42735.html

    任何一个大学生对菲波那契数列(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

    思路分析:预处理出来每个位置的sg值,然后根据题目去异或求解即可,当异或和不为0时,先手必胜
    代码示例 :

    int f[100];
    int sg[1005], s[1005];
    
    void init(){
        f[1] = 1, f[2] = 2;
        for(int i = 3; i <= 50; i++){
            f[i] = f[i-1]+f[i-2];
            if (f[i] >= 1000) break; 
        }
        
        sg[0] = 0;
        for(int i = 1; i <= 1000; i++){
            memset(s, 0, sizeof(s));
            for(int j = 1; j <= 15 ; j++){
                if (f[j] > i) break;
                s[sg[i-f[j]]] = 1;
            }
            for(int j = 0; j <= 1000; j++){
                if (!s[j]) {sg[i] = j; break;}
            }
        }    
    }
    
    int main() {
        //freopen("in.txt", "r", stdin);
        //freopen("out.txt", "w", stdout);
        int m, n, p;
        init();
        
        //for(int i = 1; i <= 10; i++) printf("%d 
    ", sg[i]);
        while(~scanf("%d%d%d", &m, &n, &p) && m+n+p){
            if (sg[m]^sg[n]^sg[p]) printf("Fibo
    ");
            else printf("Nacci
    ");
            
        }
        return 0;
    }
    
    东北日出西边雨 道是无情却有情
  • 相关阅读:
    Java Output流写入包装问题
    SpringBoot项目单元测试不经过过滤器问题
    SpringSecurity集成启动报 In the composition of all global method configuration, no annotation support was actually activated 异常
    JWT jti和kid属性的说明
    Maven 排除依赖
    第五章 基因概念的发现
    第三章 孟德尔遗传的拓展
    第二章 孟德尔遗传
    第一章 引言
    GWAS全基因组关联分析
  • 原文地址:https://www.cnblogs.com/ccut-ry/p/9017101.html
Copyright © 2011-2022 走看看