zoukankan      html  css  js  c++  java
  • hdu1848(sg函数打表)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1848

    题意:中文题诶~

    思路:直接sg函数打表就好了

    代码:

     1 #include <iostream>
     2 #include <string.h>
     3 #define MAXN 3010
     4 using namespace std;
     5 
     6 int f[MAXN], sg[MAXN];
     7 
     8 void init(){//得到1000以内的fibonacci数列
     9     f[1]=1;
    10     f[2]=2;
    11     for(int i=3; ; i++){
    12         f[i]=f[i-1]+f[i-2];
    13         if(f[i]>1000){
    14             break;
    15         }
    16     }
    17 }
    18 
    19 void get_sg(){//sg函数打表
    20     for(int i=1; i<=1000; i++){
    21         int vis[MAXN];
    22         memset(vis, 0, sizeof(vis));
    23         for(int j=1; f[j]<=i; j++){//找到当前节点能到达的点
    24             vis[sg[i-f[j]]]=1;
    25         }
    26         for(int j=0; j<=1000; j++){//求mex函数
    27             if(!vis[j]){
    28                 sg[i]=j;
    29                 break;
    30             }
    31         }
    32     }
    33 }
    34 
    35 int main(void){
    36     init();
    37     get_sg();
    38     int n, m, p;
    39     while(cin >> n >> m >> p){
    40         if(n+m+p==0){
    41             break;
    42         }
    43         if(sg[n]^sg[m]^sg[p]){//sg函数性质
    44             cout << "Fibo" << endl;
    45         }else{
    46             cout << "Nacci" << endl;
    47         }
    48     }
    49     return 0;
    50 }
    View Code
  • 相关阅读:
    HDU 2544 (Djikstra)
    HDU 1237(表达式求值)
    HDU1690 (Floyd)
    《大道至简》读后感
    第6周总结
    第8周总结
    第7周总结
    第四周总结
    第5周总结
    java程序
  • 原文地址:https://www.cnblogs.com/geloutingyu/p/6653460.html
Copyright © 2011-2022 走看看