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; }