zoukankan      html  css  js  c++  java
  • hdoj 1847 博弈

      这题范围是1-1000,可以用打表法写出来,满足2^n<=1000这个条件的n的取值是[0,9]。

      就简单了,只要在i-2^n的记录中找到必败点那么就可以认定i点是必胜点。

      然后打表输出就可以了。

     1 #include <stdio.h>
     2 bool num[1000+10];
     3 int main()
     4 {
     5     int n,i,j;
     6     num[0]=num[1]=1;//1代表赢 0代表输 (针对先手来说)
     7     int POWa[11]={0,1,2,4,8,16,32,64,128,256,512}; 
     8     for(i=2;i<=1000;++i) 
     9     {
    10         num[i]=0;
    11         for(j=1;j<=10;++j)
    12         {
    13             if(i<POWa[j]) break;
    14             if(i==POWa[j])
    15             {
    16                 num[i]=1;
    17                 break;
    18             }
    19             if(num[i-POWa[j]]==0) 
    20             {
    21                 num[i]=1;
    22                 break;
    23             }
    24         }
    25     }
    26     while(scanf("%d",&n)!=EOF)
    27     {
    28         if(num[n]==1)
    29             printf("Kiki\n");
    30         else
    31             printf("Cici\n");
    32     }
    33     return 0;
    34 }
  • 相关阅读:
    nodejs ---day01
    面向对象
    面向对象
    面向对象
    webpack
    webpack
    webpack
    模块化 (ESM) --- day02
    模块化 --- day01
    轮播图(淡入淡出切换)
  • 原文地址:https://www.cnblogs.com/symons1992/p/2849510.html
Copyright © 2011-2022 走看看