Python|猜球博弈

简介: Python|猜球博弈

问题描述

取球博弈

今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。

我们约定:

每个人从盒子中取出的球的数目必须是:1,3,7,8。

轮到某一方取球时不能弃权!

A先取球,然后双方交替取球,直到取完。

被迫拿到最后一个球的一方为负方(输方)

请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢?

程序运行时,从标准输入获得数据,其格式如下:

先是一个整数n(n<100),表示接下来有n个整数。然后是n个整数,每个占一行(整数<10000),表示初始球数。

程序则输出n行,表示A的输赢情况(输为0,赢为1)。

例如,用户输入:

10

18

则程序应该输出:

0

1

1

0

解决方案

注意‘两人都很聪明,不会做出错误的判断’这段话。

意思是当A和B面临选择时,如果他们的选择能使对方输(不管对方怎么选择,结果都是输),那么他们就一定会这样选择。

所以,这可能就是一个找规律的题型,在一定范围内具有某种规律,之后不停地重复这种规律。因为球数多了 A先选就会把情况变成之前的某一种情况。

我们试一试:

次数输赢(输 0  赢 1)

1   0

2   1

3   0

4  1

5   0

6   1

7   0

8   1

9   1

10  1

11  1

12  1

13  1

14  1

15  1

16  0

17  1

18  0

19  1

不难看出这是以15为一个循环的,1到8是输赢交替,9到15都是赢。接下来写代码便容易了很多。

编写代码:

n = int(input('多少个开始球数的情况:'))

l = list(i for i in range(n))

for i in range(n):

    l[i] = int(input())


def qiuqiu(m):

    mm = m % 15

    if mm > 7: print(1)

    else:

        if mm % 2 == 0: print(1)

        else: print(0)


for i in l:

    qiuqiu(i

目录
打赏
0
0
0
0
14
分享
相关文章
2024年Python最全使用Python求解方程_python解方程,2024年最新面试高分实战
2024年Python最全使用Python求解方程_python解方程,2024年最新面试高分实战
2024年Python最全使用Python求解方程_python解方程,2024年最新面试高分实战
【Python】基础算法小练
文章目录 题目1:编写程序,用户输入一个四位整数,输出其百位千位和个位数字之和。 题目2:生成包括1000个0到100之间的随机整数,统计每个元素的出现次数,输出重复次数最多的元素。(提示:可能存在重复数据。) 题目3:请输入一个字符串,再输入要删除的某个字符 ,大小写不用区分
【Python】基础算法小练
快速掌握Python的捷径-Python基础前传(1)
文: jacky(朱元禄) 开文序 最近看新闻,发现高考都考Python了,随着人工智能的火热,学数据科学的人越来越多了!但对于数据行业本身来说,现象级的火热,这并不是什么好事。  方丈高楼平地起,无论做什么事,基础都是最重要的。
1455 0
经济学人:Python为什么是编程语言中最skr的?
Python的出现让计算机编程语言不再是生僻的专业技能,而是常人都能学习和使用的万金油。
2179 0
python常用算法
1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
1296 0