poj 2234
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 6 int main() 7 { 8 int i,j,n,m,t; 9 while(~scanf("%d",&n)) 10 { 11 int ans=0; 12 for(int i=0;i<n;i++) 13 { 14 scanf("%d",&m); 15 ans^=m; 16 } 17 if(ans) 18 printf("Yes\n"); 19 else printf("No\n"); 20 21 }
hdu 1847 good luck in。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 bool vis[1002]; 6 int sg[1002]; 7 8 void getsg() 9 { 10 sg[0]=0; 11 for(int i=1;i<1002;i++) 12 { 13 memset(vis,false,sizeof(vis)); 14 for(int j=0;(1<<j)<=i;j++) 15 { 16 vis[sg[i-(1<<j)]]=true; 17 } 18 for(int j=0;j<1002;j++) 19 if(vis[j]==false) 20 { 21 sg[i]=j; 22 break; 23 } 24 } 25 26 } 27 28 int main() 29 { 30 int i,j,n,m,t; 31 getsg(); 32 while(~scanf("%d",&n)) 33 { 34 35 if(sg[n]) 36 printf("Kiki\n"); 37 else printf("Cici\n"); 38 39 } 40 41 return 0; 42 }
hdu 1848
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 bool vis[1002]; 6 int sg[1002]; 7 int f[30]; 8 9 void getf() 10 { 11 f[1]=1; 12 f[2]=2; 13 for(int i=3;i<30;i++) 14 f[i]=f[i-1]+f[i-2];//printf("%d\n",f[i]);} 15 } 16 17 void getsg() 18 { 19 sg[0]=0; 20 for(int i=1;i<1002;i++) 21 { 22 memset(vis,false,sizeof(vis)); 23 for(int j=1;f[j]<=i;j++) 24 { 25 vis[sg[i-f[j]]]=true; 26 } 27 for(int j=0;j<1002;j++) 28 if(vis[j]==false) 29 { 30 sg[i]=j; 31 break; 32 } 33 } 34 35 } 36 37 int main() 38 { 39 int i,j,n,m,t,p; 40 getf(); 41 getsg(); 42 while(~scanf("%d%d%d",&n,&m,&p)) 43 { 44 if(n==0&&m==0&&p==0) 45 break; 46 int ans=0; 47 ans=sg[n]^sg[m]^sg[p]; 48 49 if(ans) 50 printf("Fibo\n"); 51 else printf("Nacci\n"); 52 53 } 54 55 return 0; 56 }
原文:http://www.cnblogs.com/assult/p/3597362.html