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来干嘛...