zoukankan      html  css  js  c++  java
  • hdu 1847 Good Luck in CET-4 Everybody! (博弈)

    Good Luck in CET-4 Everybody!

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 4118    Accepted Submission(s): 2604


    Problem Description
    大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此。当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考前的放松,所谓“张弛有道”就是这个意思。这不,Kiki和Cici在每天晚上休息之前都要玩一会儿扑克牌以放松神经。
    “升级”?“双扣”?“红五”?还是“斗地主”?
    当然都不是!那多俗啊~
    作为计算机学院的学生,Kiki和Cici打牌的时候可没忘记专业,她们打牌的规则是这样的:
    1、  总共n张牌;
    2、  双方轮流抓牌;
    3、  每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)
    4、  抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;
    假设Kiki和Cici都是足够聪明(其实不用假设,哪有不聪明的学生~),并且每次都是Kiki先抓牌,请问谁能赢呢?
    当然,打牌无论谁赢都问题不大,重要的是马上到来的CET-4能有好的状态。

    Good luck in CET-4 everybody!
     
    Input
    输入数据包含多个测试用例,每个测试用例占一行,包含一个整数n(1<=n<=1000)。
     
    Output
    如果Kiki能赢的话,请输出“Kiki”,否则请输出“Cici”,每个实例的输出占一行。
     
    Sample Input
    1 3
     
    Sample Output
    Kiki Cici
     
    Author
    lcy
     
    Source
     
    Recommend
    lcy   |   We have carefully selected several similar problems for you:  1848 1849 1404 1729 1730 
     
     1 //0MS    264K    563 B    C++     
     2 /*
     3 
     4     题意:
     5         中文
     6     
     7     博弈:
     8         这里用到了SG值,其意义可参考 博弈及SG 一文,期中讲得很详细。
     9     mex函数就是用来求SG值的。 
    10     
    11     直接讲比较难讲清楚,自己动手模拟一下或多看几遍论文会有效些。
    12     
    13     这题还有个更简单的规律方法,动手推出来不难:
    14         n%3==0 则 Cici 胜
    15         否则 Kiki 胜 
    16 
    17 */
    18 #include<stdio.h>
    19 #include<string.h>
    20 int c[10]={1,2,4,8,16,32,64,128,256,512};
    21 int sg[1005],ki[1005];
    22 void mex()
    23 {
    24     memset(sg,0,sizeof(sg));
    25     for(int i=0;i<1005;i++){
    26         memset(ki,0,sizeof(ki));
    27         for(int j=0;j<10;j++){
    28             if(c[j]>i) break;
    29             ki[sg[i-c[j]]]=1;
    30         }
    31         int k=0;
    32         while(ki[k]) k++;
    33         sg[i]=k; 
    34     }
    35 }
    36 int main(void)
    37 {
    38     int n;
    39     mex();
    40     while(scanf("%d",&n)!=EOF)
    41     {
    42         if(sg[n]) puts("Kiki");
    43         else puts("Cici"); 
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    动态传参
    函数的介绍
    文件的操作
    send email with formatted table
    minimize and close window with customed winform
    python algorithm
    something important about docker
    book list
    which language is suitable for what to do
    Find Duplicate Items in list fast
  • 原文地址:https://www.cnblogs.com/GO-NO-1/p/3481102.html
Copyright © 2011-2022 走看看