CCF201712-2 游戏 (python语言)
2019-01-24 10:48
211 查看
试题编号: | 201712-2 |
试题名称: | 游戏 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: |
问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。 输入格式 输入一行,包括两个整数n和k,意义如题目所述。 输出格式 输出一行,包含一个整数,表示获胜的小朋友编号。 样例输入 5 2 样例输出 3 样例输入 7 3 样例输出 4 数据规模和约定 对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。 |
问题链接:CCF201712-2 游戏
问题分析
一种思路就是给每个小朋友做上标记,出局的小朋友并不从数组中删去,只是不再对他进行相关操作。最后只剩下一个没有被标记的小朋友时结束程序,对数组进行一次循环,找出这个获胜的小朋友。
还有一种思路就是利用python方便的删除数组元素的函数pop。将每个出局的小朋友直接从数组中删去,但是也要对每个小朋友进行标记,不过标记内容是每个小朋友的初始编号。
下面程序以第一种思路进行编写
满分代码
[code]n,k=input().split() n,k=int(n),int(k) #当count为n-1时,代表已经有n-1个小朋友被淘汰 count=0 #num代表接下来的小朋友报数是多少 num=1 #小朋友数组,其中child[i][1]为一个标记,False代表出局 child=[] #初始化小朋友数组 for i in range(n): child+=[[num,True]] num+=1 #如果符合出局的条件,并且不是最后一个小朋友,则将其置为false if (child[i][0]%k==0 or child[i][0]%10==k) and count!=n-1: child[i][1]=False count+=1 #重复给没有淘汰的小朋友赋值,直到只剩下一个小朋友 while(count<n-1): for i in range(n): #下面两个判断时一定要加上count的判断,否则可能出现小朋友全部被置为False的情况 if child[i][1]==True and count!=-1: child[i][0]=num num+=1 if (child[i][0]%k==0 or child[i][0]%10==k) and count!=n-1: child[i][1]=False count+=1 for i in range(n): if child[i][1]==True: print(i+1) break
相关文章推荐
- Python游戏:语言基础和技术
- python语言学习笔记(三)-----模拟投掷三个骰子,对游戏结果进行统计
- 【脚本语言系列】关于Python游戏工具Pygame,你需要知道的事
- python中pygame针对游戏窗口的显示方法实例分析(附源码)
- 学习Python语言---文件操作
- ml的线性回归应用(python语言)
- python 动态语言 __slots__
- python (5分钟实现一个游戏的屏蔽敏感字系统,)
- python语言实现斐波那契数列
- Python语言Web开发框架web2py
- Python语言基础--2(字符串的相关操作)
- python语言统计文档字频
- 50行Python代码写一个语言检测器
- 02 讲:用 Python 设计第一个游戏
- python 写的扫雷游戏
- Python挑战游戏( PythonChallenge)闯关之路Level- 3
- 剑指offer python语言解法
- 【ime老师倾情奉献】Lua语言开发Cocos2d-x游戏视频教程
- Python 语言及其应用 Chapter_4_Note_2 函数_参数_
- Python语言文件基础--Python(18)