51nod Bash游戏V2

    xiaoxiao2026-02-27  7

    这是一道博弈题。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[N],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; }

    转载请注明原文地址: https://ju.6miu.com/read-1307431.html
    最新回复(0)