51nod Bash游戏V2
2016-08-16 10:34
190 查看
这是一道博弈题。A,B都只能去1,3,4个石子,最后拿到最后一个石子的人赢。这种博弈题一般有规律可寻
n=1时A赢。
n=2时,A只能取1,所以B赢。
n=3,4,5时A赢。
n=6时,A取4 A赢。
n=7时,A取1时B能取4,A取3时B取4,A取4时B取3 所以B赢。
n=8时,A取1时B取任何个都可以将石子总数最后变成n=4,5,6的情况,都是A赢。
n=9时,A取1时B能取1使石子总数变成7,A取3时B能取4使石子总数变成7,A取4时也一样,都是B赢
.....
从中看出,A在一开始的时候有三种取法,只要有一种能赢则A赢,要是三种都输则B赢。
而在n=8时的情况就跟n=1时的情况一样最后只取1个,n=9时和n=2时的情况一样A取1个B取1个
所以这是个以7为循环博弈,当第二种或者第七种情况时B赢,否则A赢。
代码如下:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 50010
int a
,k,n;
int main(){
int i,j,n,m,t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
if(n%7==2||n%7==0) printf("B\n");
else printf("A\n");
}
return 0;
}
n=1时A赢。
n=2时,A只能取1,所以B赢。
n=3,4,5时A赢。
n=6时,A取4 A赢。
n=7时,A取1时B能取4,A取3时B取4,A取4时B取3 所以B赢。
n=8时,A取1时B取任何个都可以将石子总数最后变成n=4,5,6的情况,都是A赢。
n=9时,A取1时B能取1使石子总数变成7,A取3时B能取4使石子总数变成7,A取4时也一样,都是B赢
.....
从中看出,A在一开始的时候有三种取法,只要有一种能赢则A赢,要是三种都输则B赢。
而在n=8时的情况就跟n=1时的情况一样最后只取1个,n=9时和n=2时的情况一样A取1个B取1个
所以这是个以7为循环博弈,当第二种或者第七种情况时B赢,否则A赢。
代码如下:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 50010
int a
,k,n;
int main(){
int i,j,n,m,t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
if(n%7==2||n%7==0) printf("B\n");
else printf("A\n");
}
return 0;
}
相关文章推荐
- 51Nod 1067 Bash游戏 V2
- 51Nod-1185-威佐夫游戏 V2
- 51Nod 1067 Bash游戏 V2 | 博弈论 Bash
- 【Cocos2d-X(2.x) 游戏开发系列之一】cocos2dx(v2.x)与(v1.x)的一些常用函数区别讲解!在2.x版CCFileData类被去除等
- 51nod 1067 Bash游戏 V2
- 1185 威佐夫游戏v2,卡精度,乘法模拟
- 51nod oj 1066 Bash游戏 1067 Bash游戏 V2【巴什博奕】
- 51Nod Problem 1067 Bash游戏 V2(博弈,sg函数)
- 51nod 1067 bash游戏V2
- 51nod-【1067 Bash游戏 V2】
- 51nod 1185 威佐夫游戏 V2
- 51 nod 1200 石子游戏V2 FWT
- 1067 Bash游戏 V2找规律
- 51nod oj 1072 威佐夫游戏 1185 威佐夫游戏 V2【威佐夫博奕】
- 1067 Bash游戏 V2(51NOD2级算法题)
- 51nod Bash游戏 V2 (有限制的bash博弈)
- 51nod 1185 威佐夫游戏 V2
- 1067 Bash游戏 V2
- 51 nod 1067 Bash游戏 V2
- [51Nod 1185 威佐夫游戏 V2]Wythoff Game+乘法模拟