标签:bsp target targe stream 不为 正整数 ons ring algorithm
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2176
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
题解:通常的Nim游戏的定义是这样的:
1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 const int N=200002; 7 int a[N]; 8 int main() 9 { 10 int m,sum,s,i; 11 while(cin>>m&&m){ 12 sum=0; 13 for(i=0;i<m;i++){ 14 cin>>a[i]; 15 sum^=a[i]; 16 } 17 if(sum==0) cout<<"No"<<endl; 18 else { 19 cout<<"Yes"<<endl; 20 for(i=0;i<m;i++){ 21 s=sum^a[i]; 22 if(s<a[i]){ 23 cout<<a[i]<<" "<<s<<endl; 24 } 25 } 26 } 27 } 28 return 0; 29 }
标签:bsp target targe stream 不为 正整数 ons ring algorithm
原文地址:http://www.cnblogs.com/shixinzei/p/7327157.html