取石子定输赢

题目内容:

有一堆石子,A,B两人轮流从中取出石子,每次取出的石子数目只能为1,3,7或8,最后一枚石子谁取到就是输方。A,B两人都足够聪明,不会做出错误的判断。现给出一定数目的石子,A先取石子,计算A最终是输是赢,赢用1表示,输用0表示.

输入描述

第一行为一个整数n(0< n <=100),表示玩n局,接下来n行每行有一个整数,表示对应的局提供的石子数(不大于10000),

输出描述

编程输出A对应的n局是赢是输,赢输出1,输输出0.

输入样例

3
1
3
10

输出样例

0
0
1

#include <iostream>
#define MAX 10000
using namespace std;
int a[MAX];
void init(){
    int i;
    a[0] = a[2] = 0;
    a[1] = a[4]= a[3] = a[5] = a[6] = a[7] = a[8]= 1;
    for(i = 9; i < MAX; i++){
        if(a[i-1] && a[i-3] && a[i-7] && a[i-8])
            a[i] = 0;
        else a[i] = 1;
    }
}

int main(){
    int n,m;
    cin>>n;
    init();
    while(n--)
    {
        cin>>m;   //m个石子
        cout<<a[m-1]<<endl;
    }
    return 0;
}
时间: 2024-08-28 14:45:04

取石子定输赢的相关文章

poj 1067||hdu 1527 取石子游戏(博弈论,Wythoff Game)

取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37893   Accepted: 12684 Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者.现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者

取石子问题

取石子问题 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可.两个人轮流从堆中取物体若干,规定最后取光物体者取胜.这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理.下面我们来分析一下要如何才能够取胜. (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜

取石子游戏详解

http://blog.csdn.net/pipisorry/article/details/39249337 取石子游戏是一个古老的博弈游戏,发源于中国,它是组合数学领域的一个经典问题.它有许多不同的玩法,基本上是两个玩家,玩的形式是轮流抓石子,胜利的标准是抓走了最后的石子. 玩家设定: 先取石子的是玩家A,后取石子的是玩家B. 经典的三种玩法: 一.巴什博奕(Bash Game),有1堆含n个石子,两个人轮流从这堆物品中取物,规定每次至少取1个,最多取m个.取走最后石子的人获胜. 二.尼姆博

取石子 找规律

1 取石子 1.1 Background CZR是个智障小朋友,朌近他家装修,多出来很多石子,所以他决定 用这个来做一个游戏. 因为这是个双人游戏,所以他又找来了LSQ. 1.2 Description 游戏规则很简单: 1. 地上有很多石子,丌共n个,两个人轮流从地上拿走买部分石子: 2. 每个人每仏次必须要拿走石子,但是拿走的石子个数必须大于等 于1,小于等于k: 3. 游戏朏式始CZR先拿,拿到地上朊后一个石子的人获胜. 然而CZR的数学不太好,所以他想知道对于这个游戏他一定能获胜 吗?

取石子游戏

POJ 1067 Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者.现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者. Input 输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,000. Outp

【刷题小记23】取石子

描述 一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子.游戏的规则是这样的.设有一堆石子,数量为N(1<=N<=1000000),两个人轮番取出其中的若干个,每次最多取M个(1<=M<=1000000),最先把石子取完者胜利.我们知道,TT和他/她的室友都十分的聪明,那么如果是TT先取,他/她会取得游戏的胜利么? 输入 第一行是一个正整数n表示有n组测试数据 输入有不到1000组数据,每组数据一行,有两个数N和M,之间用空格分隔.

26-又是取石子(博弈)

/*                                        又是取石子  题目内容: "有甲乙两个人玩取石子游戏,共有n个石子(1<=n<=30000)两个人轮流取,甲先取.每次最多取m个(1<=m<=30000)最少取一个,当轮到谁取的时候没有石子了,谁就赢.比如4个石子,每次最多取3个,那末先取的人(甲)一定赢n和m谁大没有限制.)(甲拿走3个,乙只拿走1个,下面轮到甲了,但是没有石子了,甲赢了.)现在要求你写一个程序,输入n(总的石子个数),

NYOJ 23.取石子(一)

取石子(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子.游戏的规则是这样的.设有一堆石子,数量为N(1<=N<=1000000),两个人轮番取出其中的若干个,每次最多取M个(1<=M<=1000000),最先把石子取完者胜利.我们知道,TT和他/她的室友都十分的聪明,那么如果是TT先取,他/她会取得游戏的胜利么? 输入 第一行是一个正整数n表示有

HDU 1527 取石子游戏 威佐夫博弈

题目来源:HDU 1527 取石子游戏 题意:中文 思路:威佐夫博弈 必败态为 (a,b ) ai + i = bi     ai = i*(1+sqrt(5.0)+1)/2   这题就求出i然后带人i和i+1判断是否成立 以下转自网上某总结 有公式ak =[k(1+√5)/2],bk= ak + k  (k=0,1,2,-,n 方括号表示取整函数) 其中出现了黄金分割数(1+√5)/2 = 1.618-,因此,由ak,bk组成的矩形近似为黄金矩形 由于2/(1+√5)=(√5-1)/2,可以先