首页 > 代码库 > hdu 1907 John
hdu 1907 John
取火柴的游戏
题目1:今有若干堆火柴,两人依次从中拿取,规定每次只能从一堆中取若干根,
题目1:今有若干堆火柴,两人依次从中拿取,规定每次只能从一堆中取若干根,
可将一堆全取走,但不可不取,最后取完者为胜,求必胜的方法。
若sum=0;则先取者输,后取者胜;
若sum=!0,则先取者使其变成奇异状态,先取者胜
即谁先面临奇异状态谁输;
题目2:今有若干堆火柴,两人依次从中拿取,规定每次只能从一堆中取若干根,
可将一堆全取走,但不可不取,最后取完者为负,求必胜的方法。
分为2种情况:1:每个堆数的火柴数量为1,若为奇数堆,先取者最后取完,则输;
若为偶数堆,后取则输
2、每个堆数的火柴数量不是1,若sum=0;则先取者输,后取者胜,
若sum=!0,先取者胜,后取者输
总结:谁先面临奇异状态谁输,不管哪种情况!
代码如下:
#include<stdio.h> int main() { int T,a[100],i,sum,m,ok; while(~scanf("%d",&T)) { while(T--) { sum=0; ok=0; scanf("%d",&m); for(i=1;i<=m;i++) { scanf("%d",&a[i]); if(a[i]>1) ok=1; sum=sum^a[i]; } if(ok==0) { if(m%2==0) printf("John\n"); else printf("Brother\n"); } else if(sum==0) printf("Brother\n"); else printf("John\n"); } } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。