HDU 1847

题意略。

思路:又忘了dp,搜索这种暴力方法了。。。。

 

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;

bool sg[maxn];
int mm[maxn];

void init(){
    mm[0] = -1;
    for(int i = 1;i < maxn;++i){
        mm[i] = (i & (i - 1)) == 0 ? mm[i - 1] + 1 : mm[i - 1];
    }
}

int main(){
    init();
    sg[0] = false;
    for(int i = 1;i < maxn;++i){
        bool jud = true;
        for(int j = 0;j <= mm[i];++j){
            int nxt = i - (1<<j);
            jud = (jud && sg[nxt]);
        }
        sg[i] = !jud;
    }
    int n;
    while(scanf("%d",&n) == 1){
        printf("%s\n",sg[n] ? "Kiki" : "Cici");
    }
    return 0;
}

 

posted @ 2018-07-23 10:41  温和的提比略  阅读(117)  评论(0编辑  收藏  举报