尼姆博弈的变种,喜欢坑的童鞋快来吧!点开遇见坑
我的方法比较笨,考虑了很多特殊数据:
#include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int n,m,x[10111],i,ken1[2]; scanf("%d",&n); while (n--) { int sum=0,flag=0,ken2=0; long long ans; memset(x,0,sizeof(x)); scanf("%d",&m); for (i=0; i<m; i++) { scanf("%d",&x[i]); sum+=x[i]; if (x[i]>1) flag++; } if (flag==0) { if (sum&1) printf("Hrdv\n"); else printf("Yougth\n"); } else if (flag==1) { if (m==1) { printf("Yougth\n"); } else { for ( i=0; i<n; i++) { if (x[i]>1) { sum-=x[i]; break; } } if (sum&1) printf("Yougth\n"); else printf("Hrdv\n"); } } else if (flag==2) { for (i=0; i<m; i++) { if (x[i]>1) sum-=x[i]; } if (sum%2==0) { for (i=0; i<m; i++) { if (x[i]>1) ken1[ken2++]=x[i]; } if (ken1[0]==ken1[1]) printf("Hrdv\n"); else printf("Yougth\n"); } else { for (i=0; i<m; i++) { if (x[i]>1) ken1[ken2++]=x[i]; } if (ken1[0]==ken1[1]) printf("Yougth\n"); else printf("Hrdv\n"); } } else { ans=x[0]; for ( i=1; i<m; i++) ans^=x[i]; if (ans==0) { printf("Hrdv\n"); } else { printf("Yougth\n"); } } } return 0; }
#include<stdio.h> int main() { int T,n,a,i,result,count; scanf("%d",&T); while(T--) { scanf("%d",&n); result=0; count=0; for(i=1; i<=n; i++) { scanf("%d",&a); result=result^a; if(a>1) count++; } if((count&&result)||(!count&&!result)) printf("Yougth\n"); else printf("Hrdv\n"); } return 0; }
原文:http://blog.csdn.net/tcm_zhangpeng/article/details/24355345