http://www.codeforces.com/contest/79/problem/A 很久很久才ac,开始想歪了。。。各种囧啊 #include<iostream> using namespace std; #include<string> int n,m; int dfs(int x)//x是标志,1C赢,2H赢 { int a,b; if(n<0 || m<0) return x; if(x==1) { a=n; if(a>=2) { n-=2; m-=2; } if(a==1) { n-=1; m-=12; } if(a==0) { m-=22; } dfs(2); } if(x==2) { a=m; if(a>=22) { m-=22; }else { if(a>=12) { m-=12; n-=1; }else { m-=2; n-=2; }} dfs(1); } } int main() { while(scanf("%d%d",&n,&m)!=EOF) { int d=dfs(1); if(d==1) printf("Ciel/n"); else printf("Hanako/n"); } return 0; }