NC20410. [SHOI2008]小约翰的游戏JOHN
描述
输入描述
本题的输入由多组数据组成第一行包括一个整数T,表示输入总共有T组数据(T ≤ 500)。
每组数据的第一行包括一个整数N(N ≤ 50),表示共有N堆石子,接下来有N个不超过5000的整数,分别表示每堆石子的数目。
输出描述
每组数据的输出占一行,每行输出一个单词。
如果约翰能赢得比赛,则输出“John”,否则输出“Brother” ,请注意单词的大小写。
示例1
输入:
2 3 3 5 1 1 1
输出:
John Brother
C 解法, 执行用时: 4ms, 内存消耗: 436K, 提交时间: 2021-11-08 21:35:23
#include<stdio.h> int main(void) { int n,m,s,a,sum,i; scanf("%d",&n); while(n--) { scanf("%d",&m); s=sum=0; for(i=1;i<=m;i++) { scanf("%d",&a); s^=a; if(a>1) sum++;//充裕堆个数 } if((sum==0&&m&1)||(!s&&sum>1)) printf("Brother\n"); else printf("John\n"); } return 0; }
C++ 解法, 执行用时: 6ms, 内存消耗: 484K, 提交时间: 2021-08-18 16:40:01
# include<iostream> using namespace std; int main(){ int t,n,m,max; int a,ans; cin>>t; while(t--){ cin>>n; m=n; ans=0; max=0; while(n--){ cin>>a; ans=ans^a; if(max<a) max=a; } if((!ans&&max>1)||(ans&&max==1)) cout<<"Brother\n"; else cout<<"John\n"; } return 0; }