ccf 201712-2 游戏(Python实现)
一、原题
问题描述
|
试题编号: |
201712-2 |
|
试题名称: |
游戏 |
|
时间限制: |
1.0s |
|
内存限制: |
256.0MB |
|
问题描述: |
问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。 给定n和k,请问最后获胜的小朋友编号为多少? 输入格式 输入一行,包括两个整数n和k,意义如题目所述。 输出格式 输出一行,包含一个整数,表示获胜的小朋友编号。 样例输入 5 2 样例输出 3 样例输入 7 3 样例输出 4 数据规模和约定 对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。 |
二、题解
用到两个列表和一个计数器。计数器用来记录当前小朋友的报数。第一个列表用来装没有报数的小孩。第二个列表用来装报数并且不是k的整数倍的小孩。当第一个列表循环完一遍以后,把第二个列表重新复制给第一个列表。然后第二个列表置空。然后循环第二遍。当第一个列表长度是1时停止循环。然后输出当前小孩的序号。
注意:
- 用range生成时,Python3是生成一个迭代器。所以需要用list来实际在内存生成这个列表。然后是这个列表的每个元素对应的小孩应该是这个数字加1(或者range生成列表从1开始到n+1)才是小孩的真正序号。
- 题中有两点儿要求:一是小朋友数到k时淘汰;二是小朋友报数的个位数为k时小朋友也被淘汰。
三、代码
- 以下提交20分:
L = list(map(int,input().split()))
n, k = L[0], L[1]
li = list(range(n))
c = 1
while len(li) > 1:
li1 = []
for i in range(len(li)):
if c%k==0:
c += 1
else:
li1.append(li[i])
c += 1
li = li1[:]
print(li[0]+1)
- 修改后提交得30分:
L = list(input().split())
n, k = int(L[0]), int(L[1])
li = list(range(1,n+1))
c = 1
while len(li) > 1:
li1 = [] #之前没有考虑到k=1
if k == 1:
li1.append(li[-1])
li = li1[:]
break
for i in range(len(li)):
if c%k==0:
c += 1
else:
li1.append(li[i])
c += 1
li = li1[:]
print(li[0])
- 认真审题以后发现还有报数的个位数为K时也会淘汰。所以更改如下:
L = list(input().split())
n, k = int(L[0]), int(L[1])
li = list(range(1,n+1))
c = 1
while len(li) > 1:
li1 = [] #之前没有考虑到k=1
if k == 1:
li1.append(li[-1])
li = li1[:]
break
for i in range(len(li)):
#之前没有考虑个位数为k
if (c%k==0) or (c%10==k):
c += 1
else:
li1.append(li[i])
c += 1
li = li1[:]
print(li[0])
ccf 201712-2 游戏(Python实现)的更多相关文章
- CCF CSP 201604-4 游戏
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201604-4 游戏 问题描述 小明在玩一个电脑游戏,游戏在一个n×m的方格图上进行,小明控制 ...
- CCF CSP 201712-2 游戏
题目链接:http://118.190.20.162/view.page?gpid=T67 问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐 ...
- 一个简单的猜大小的小游戏 python
初学python,用python写了一个简单的猜大小的小游戏 #!/usr/bin/env python #-*- coding:utf-8 -*- print "------------- ...
- 猜数字游戏-python
题目: 用python写一个猜数字的游戏,游戏规则如下: 1.由一个人随机写一个整数1-99(如:21) 2.一群小伙伴轮流猜数字,如第一个人猜一个数(如:48),则缩小范围至(1-48) 3.如第二 ...
- ccf 201803-1 跳一跳(Python实现)
一.原题 问题描述 试题编号: 201803-1 试题名称: 跳一跳 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱. 简化 ...
- 洛谷P1080 国王游戏 python解法 - 高精 贪心 排序
洛谷的题目实在是裹脚布 还编的像童话 这题要 "使得获得奖赏最多的大臣,所获奖赏尽可能的少." 看了半天都觉得不像人话 总算理解后 简单说题目的意思就是 根据既定的运算规则 如何排 ...
- 蒙提霍尔游戏 python 模拟
本文使用蒙特卡罗方法验证蒙提霍尔游戏的结论. 以下代码,本人原创! 完整代码 import random # 蒙提霍尔游戏 def play_game(strategy='nonchange'): # ...
- ccf消除类游戏
问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消 ...
- CCF认证201712-2游戏
问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向. 游戏开始,从1号小朋 ...
随机推荐
- [Android]HttpClient和HttpURLConnection的区别
转载:http://blog.csdn.net/guolin_blog/article/details/12452307 最近在研究Volley框架的源码,发现它在HTTP请求的使用上比较有意思,在A ...
- Java函数的传参机制
一 最近的一个项目,里面各种返回void,参数用引用类型,那叫一个熟和多,但是也把我绕糊涂了. 我就打算好好理一理java的传参机制,整理一番 二 很多人一听Java的传参,那一定会脱口而出,java ...
- return void ajax
public class UserInfo { private String name; private Integer age; public String getName() { return n ...
- 关于React的require添加动态变化的路径
关于React的require添加动态变化的路径 直接这样写显然是不会有错误的 let path = require('../images/girl.png'); 但是如果你尝试着 var gg = ...
- ES6 Interator
Interator "集合"数据的结构主要有 Array .Object. Set and Map ,任何数据结构只要部署 Iterator 接口,就可完成遍历操作 遍历过程: 创 ...
- xcode在代码中查找中文
总是忘记xcode中查找中文,这次记下来,以后就不会忘记了,哈哈 请看下图: 切换到查找,点击find后面的text,选择Regular Expression,然后输入 1. 查找非ascii的字符 ...
- JAVA加密解密DES对称加密算法
下面用DES对称加密算法(设定一个密钥,然后对所有的数据进行加密)来简单举个例子. 首先,生成一个密钥KEY. 我把它保存到key.txt中.这个文件就象是一把钥匙.谁拥有它,谁就能解开我们的类文件. ...
- LayUI 完美兼容Vue.js
<div id="app"> <form class="layui-form" action=""> <div ...
- PHP的socket通信原理及实现
对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1. 什么是TCP/IP.UDP?2. Sock ...
- git的常用操作指令
git学习网址: http://www.backlogtool.com/git-guide/cn/intro/intro2_3.html 廖雪峰的git教程 git的工作区和暂存区(描述git的工作流 ...