Bash博弈裸题
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int T,num,n,m,ans,x;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
if(n%(m+1)==0)printf("Lose\n");
else printf("Win\n");
}
return 0;
}
Bash博弈拓展
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int main(){
while(~scanf("%d%d",&n,&m)){
if(n<=m){
for(int i=n;i<=m;i++){
if(i!=m)printf("%d ",i);
else printf("%d\n",i);
}
}
else{
if(n%(m+1)){
for(int i=n%(m+1);i<=m;i+=(m+1)){//最少要加n%(m+1) 使其变成奇异局
if((i+m+1)<=m)printf("%d ",i);//或者再加 (m+1)的倍数 使其奇异局
else printf("%d\n",i);
}
}
else printf("none\n");
}
}
return 0;
}
裸Nim博弈
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn=1e5+7;
int T,n,x,ans;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&x);
if(i==0)ans=x;
else ans^=x;
}
if(ans==0)printf("Liu_B is not sure to win.\n");
else printf("Liu_B is sure to win.\n");
}
return 0;
}
Bash博弈+Nim博弈
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int T,num,n,m,ans,x;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&num);
for(int i=1;i<=num;i++){
scanf("%d%d",&n,&m);
if(n%(m+1)==0) x=0;
else x=n%(m+1);
if(i==1)ans=x;
else ans^=x;
}
if(ans==0)printf("Lose\n");
else printf("Win\n");
}
return 0;
}