取(m堆)石子游戏

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1741    Accepted Submission(s): 1014

Problem Description
m堆石子,两人轮流取.仅仅能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出如何取子.比如5堆 5,7,8,9,10先取者胜,先取者第1次取时能够从有8个的那一堆取走7个剩下1个,也能够从有9个的中那一堆取走9个剩下0个,也能够从有10个的中那一堆取走7个剩下3个.
 
Input
输入有多组.每组第1行是m,m<=200000. 后面m个非零正整数.m=0退出.
 
Output
先取者负输出No.先取者胜输出Yes,然后输出先取者第1次取子的全部方法.假设从有a个石子的堆中取若干个后剩下b个后会胜就输出a b.參看Sample Output.
 
Sample Input
2
45 45
3
3 6 9
5
5 7 8 9 10
0
 
Sample Output
No
Yes
9 5
Yes
8 1
9 0
10 3
/*
加了半天凝视也还是没搞得清清楚楚了,要睡觉了。原谅我吧,先A了,加油! !!
Time:2014-8-26 1:03
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
int a[200000+10];
int main(){
int N;
while(scanf("%d",&N),N){
int ans=0,sum=0;
memset(a,0,sizeof(a));
for(int i=0;i<N;i++){
scanf("%d",&a[i]);
ans^=a[i];
sum+=a[i];
}
if(ans==0)
printf("No\n");
else{
printf("Yes\n");
//printf("%d\n",sum-ans);
for(int i=0;i<N;i++){
int x=(a[i]^ans);//ans相当于剩余的个数
//x相当于去掉 a[i],即不取a[i]
//ans=0为先手必败态,先手取掉剩余的个数ans
//仅仅要先手去掉。就能够使后手成为必败态的先手。即异或为0且先手先取
if(x<a[i])
//假设去掉 a[i]后剩的个数小于堆中的个数,便可取
//比方 2堆 3 1 为 必胜态,先手取掉 x即 3-1便可转化为先手必败的1 1
printf("%d %d\n",a[i],x);
}
}
}
return 0;
}

最新文章

  1. 学会用bootstrap的modal和carousel
  2. The specified module could not be found
  3. SIP模块版本错误问题:the sip module implements API v??? but XXX module requires API v???
  4. Dapper with MVC MiniProfiler
  5. linux 进程的创建
  6. August 7th 2016, Week 33rd Sunday
  7. JDBC工作模块
  8. 07 concurrency and Multi-version
  9. Nodejs创建https服务器(Windows 7)
  10. static和public
  11. java Ant 的使用
  12. java List 去重(两种方式)
  13. MYSQL死锁
  14. Hadoop学习历程(五、真正的分布式系统搭建)
  15. 浙江大学2015年校赛F题 ZOJ 3865 Superbot BFS 搜索
  16. 【优先队列-求第Ki大的数】Black Box
  17. pipe的实现
  18. 一张表搞清楚php is_null、empty、isset的区别
  19. python_集合
  20. 匿名函数、高阶函数以及map

热门文章

  1. Knockout v3.4.0 中文版教程-14-控制文本内容和外观-style绑定
  2. Python基础之字符串,布尔值,整数,列表,元组,字典,集合
  3. Appium切换webview时候报chromedriver版本问题
  4. 【java基础 7】java内存区域分析及常见异常
  5. iOS学习笔记11-多线程入门
  6. Linux 下测试磁盘读写 I/O 速度的方法汇总
  7. 云计算与 OpenStack
  8. linux 管道符号 | ,以及&amp;&amp; ||等等特殊符号笔记
  9. Linux crontab 定时任务Demo
  10. linux 安裝jdk