http://acm.hdu.edu.cn/showproblem.php?pid=1847
题意:同nim..不过只有一堆..每次取2的幂次..即1、2、4....等,n<=1000
#include <cstdio>
#include <cstring>
using namespace std;
int f[1005];
int dfs(int n) {
if(n==0) return 0;
if(f[n]!=-1) return f[n];
for(int i=1024; i; i>>=1) if(n>=i && !dfs(n-i)) return f[n]=1;
return f[n]=0;
}
int main() {
memset(f, -1, sizeof f);
int x;
while(~scanf("%d", &x)) dfs(x)?puts("Kiki"):puts("Cici");
return 0;
}
其实和上踢一样= =我不想贴的....
裸的记忆化就行了= =还用sg来干嘛...