Python编程挑战赛
题1:给小朋友分糖,每人分到糖的数量不同,输入小朋友的数量,计算至少需要多少糖?
思路:第1个小朋友1颗糖,第2个小朋友2颗糖,第3个小朋友3颗糖,……第n个小朋友n颗糖,计算1+2+……+n的和即可。
第1种写法:不用Python高级函数
n = int(input())r = 0for i in range(1, n + 1): r = r + iprint(r)
第2种写法:用Python高级函数
def splitcandy(n): return sum(list(range(1,n+1)))
n = 10print(splitcandy(n))
题2:韩信点兵
一队士兵,3个一数多2人,5个一数多3人,7个一数多2人,问总共有多少人?输入一个数字n,判断在1~n之间有多少满足要求的数字。
第1种写法:不用函数
n = int(input())for i in range(n): if i % 3 == 2 and i % 5 == 3 and i % 7 == 2: print(i)
第2种写法:函数并数组输出
def hanxin(n): ans = [] for i in range(n): if i % 3 == 2 and i % 5 == 3 and i % 7 == 2: ans.append(i) return ans
题3:小明家里有很多不同的趣味书籍,有3个好朋友每人来借一本书(同一本书一次不能借给两个人)
任意输入书籍的数量n(3<=n<=100),输出在所有的书籍中,找3本书给3个人有多少种不同的排列组合方法。
【输入样例】 3 【输出样例】 6
排列组合问题
n = int(input())print(n * (n - 1) * (n - 2))
题4:情报员使用4位数字来传递信息,同时为了防止信息泄露,需要将数字进行加密。数据加密的规则是:
每个数字都进行如下处理:该数字加上5之后除以10的余数,替换原数字;
将处理后第一位数字与第三位数字进行交换,第二位数字与第四位数字进行交换。
现在任意输入一个四位数n(1000<=n<=9999),输出加密之后的数字。
第1种写法:用Python高级函数
def encode(n): #step 1st str->int nseq = [(int(i)+5)%10 for i in str(n)] print(nseq)
#step 2nd nseq[0], nseq[2] = nseq[2],nseq[0] nseq[1], nseq[3] = nseq[3], nseq[1] return ''.join(list(map(str,nseq)))
n = 1234print(encode(n))
第2种写法:不用Python高级函数
n = 1234r = ""for a in str(n): r = r + str((int(a) + 5) % 10)
r = r[2]+r[3]+r[0]+r[1]print(int(r))
题5:我们在寄信的时候都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或者几张的组合,可以满足不同邮件的不同邮资。
已知每个信封上最多能贴5
张邮票,至少包含3
种面值的邮票。任意输入一个数字n
代表邮票的种类,然后依次输入n个数字代表不同种类的邮票面值,计算并输出每个信封上可以构成的邮资的最大值。
【输入样例】n=5
4
1
2
3
4
【输出样例】17
推荐写法:高级函数+集合 重要的原则是不要损失输入参数的完整!
每一封信贴的邮票数量maxs
可以灵活设定,不一定是 5 每一封信邮票的面额种类mintype
def stamps(arr,maxs,mintype):#len(arr) = n arrs = sorted(set(arr),reverse=True)[:mintype] return sum(arrs) + arrs[0]*(maxs-mintype)arr = [4,1,2,3,4]maxs,mintype = 5,3print(stamps(arr,maxs,mintype))
比较下面的写法优劣,下面的写法有几个问题:
1、remove()
命令破坏了输入参数的完整 2、上面的写法灵活应对参数应需求的变化:
例如每一封信贴的邮票数量maxs
可以灵活设定(不一定是 5) 每一封信邮票的面额种类mintype
可以灵活初始化;
n = int(input())youpiao = []for i in range(n): youpiao.append(int(input()))
max1 = max(youpiao)youpiao.remove(m1)max2 = max(youpiao)youpiao.remove(m2)max3 = max(youpiao)
print(max1 * 3 + max2 + max3)
不建议上面的写法
题6:一个箱子里面存放着50个球,其中10个红色,10个黄色,30个蓝色。现在从箱子里面任意取n个球,计算并输出不同颜色的球的数量组合一共有多少种可能性。
【输入样例】 2 【输出样例】 6
题6讲解拓展到三原色组合为不同颜色的效果
def combin_rby(r,b,y,n): cunt = 0 for i in range(r): for j in range(b): for m in range(y): if i + j + m == n: cunt += 1 return cunt
r, b, y, n, total = 10,10,30,2print('rby: ',combin_rby(r,b,y,n))
6
三原色的比例不同,颜色不同看参见以前颜色表达链接
题7:依次输入一个字符串s与一个数字n,寻找字符串中所有连续出现n次的字符,统计符合要求的字符数量并输出:例如输入abbcccdddd,输入2,字符串中连续出现2次的字符包括b、c、d这3种
【输入样例】
abbcccdddd
2
【输出样例】3
写法1 函数
def repeat(strng,n): cunt = 0 for c in set(list(strng)): if c*n in strng: cunt += 1 return cuntstrng,n = 'abbcccdddd',2print(repeat(strng,n))
写法2 思路一致
s = input()n = int(input())cc = set(s)r = 0for c in cc: if c * n in s: r = r + 1print(r)
题8:当数字的位数高达上百位时,这样庞大的数字在计算机中的计算已经完全不能用简单的加减乘除来实现了,但是有时候对于这种高精度数字的处理也是编程中必不可缺的。
任意输入一个数字n(99999<n<999999),计算n的n次方(即连续n个n相乘)计算之后,最后的3位数字是多少?
【输入样例】 123456 【输出样例】 856
n = int(input())n = n ** na = n % 10b = n % 100 // 10c = n % 1000 // 100print(str(c * 100 + b * 10 + a))
题9:一群渔民被海盗抓住了,依次坐在编号为1~n的凳子上,其中有一个人身上有藏宝图。现在海盗想要找那个身上带着宝藏的渔民,海盗先将1号凳子上面的人搜身,没找到就隔1个凳子,将3号凳子上面的人搜身,没找到就隔2个凳子,将6号凳子上面的人搜身。以后每次多隔一个凳子去搜索……这样下去找了100次没找到,最终放弃了把渔民释放了。任意输入一个数字n(5<=n<=20)代表渔民的数量,依次输出哪些编号的渔民不会被搜身。
【输入样例】 10
【输出样例】 [2, 4, 7, 9]
写法1
def notFind(n): seat = [1] * n idx = 0 for d in range(2,103): #100 steps seat[idx] = 0 idx = (idx+d) % n return [i+1 for i,e in enumerate(seat) if e==1]
n = 10print(notFind(n))
写法2
n = int(input())lst = [0] * njiange = 1suoyin = 0c = 0while 1: lst[suoyin % n] = 1 jiange = jiange + 1 suoyin = suoyin + jiange c = c + 1 if c == 100: breakfor i in range(n): if lst[i] == 0: print(i + 1)
题10:学校举办亲子运动会,所有的父亲一组,孩子一组,出场规则是:父亲组先派一个人上场之后孩子组才能派一个人上场,假设每队3对父子,可能的出场策略包括5种:父父父子子子、父父子子父子、父父子父子子、父子父父子子、父子父子父子。
任意输入父子的对数n(3<=n<=15),计算并输出有多少种出场策略。
【输入样例】 3 【输出样例】 5
思路
第一个必须安排父亲,那么还有n-1个父亲分布 2,3, ... ... 2×n,
排列组合 C(n-1,2n-1)= (2n-1)×(2n-2)× ....2n / (n-1)×(n-2)×... ...1
第1种写法 不用高级函数,解析排列组合公式
def solve(n): out = 1 for i in range(1,n): out *= (2*n-i)/(n-i) return out
print(solve(n=3))10.0
第2种写法 用高级函数
导入itertools
的permutations
条件判断过滤,保留符合每一个组合中第一个元素是 f
from itertools import permutationsdef permut(n): f, s = n* ['f'], n * ['s'] res = list(permutations(f+s,2*n)) resfilter = [p for p in res if p[0]=='f'] return len(set(resfilter)),set(resfilter)
n = 3print(permut(n))
10
#所有组合
{('f', 's', 'f', 's', 's', 'f'), ('f', 's', 'f', 's', 'f', 's'), ('f', 'f', 'f', 's', 's', 's'), ('f', 'f', 's', 'f', 's', 's'), ('f', 'f', 's', 's', 'f', 's'), ('f', 's', 's', 'f', 'f', 's'), ('f', 's', 's', 's', 'f', 'f'), ('f', 'f', 's', 's', 's', 'f'), ('f', 's', 's', 'f', 's', 'f'), ('f', 's', 'f', 'f', 's', 's')})
两种写法结果一致!
本文由 mdnice 多平台发布
Python编程挑战赛相关推荐
- 青少年电子信息智能创新大赛 -- Python编程挑战赛初赛试题说明
- 格灵深瞳发起 AI · 爱 算法 在线编程挑战赛
点击我爱计算机视觉标星,更快获取CVML新技术 DEEP SEA FISH 编 程 高 手 集 结 令 一 决 高 下 你热爱编程,喜欢AI么?如果你的答案是Yes,这里有一场绝不可错过的在线编程挑战 ...
- 第二届全国大学生算法设计与编程挑战赛(冬季赛)题解
文章目录 塔 日记 神仙爱采药 奇怪的小鸭子也增加了 关于哥俩好的数字这件事 出题人说这道题是一个签到题 但更爱字符串 今天下午上课差点把这个比赛忘了,对了6个,应该算一般吧,应该是个铜奖(前百分之3 ...
- 数学建模竞赛用python_2018全国中学生数学建模与Python编程夏令营
全国中学生数学建模与Python编程夏令营招生简章 为什么要学习数学建模? 1)国务院关于新一代人工智能发展<规划>:在中小学阶段设置人工智能相关课程,实施全民智能教育项目,在中小学阶段设 ...
- python数学建模大赛_2018全国中学生数学建模与Python编程冬令营
全国中学生数学建模与Python编程冬令营招生简章 为什么要学习数学建模? 1)国务院关于新一代人工智能发展<规划>:在中小学阶段设置人工智能相关课程,实施全民智能教育项目,在中小学阶段设 ...
- python结合硬件_让创意照进现实,基于Python编程软硬件结合教学
2020年12月11日上午,南京市高中信息技术教研活动在南京师范大学附属扬子中学成功开展.本次活动以"让创意照进现实,基于Python编程软硬件结合教学"为主题,通过研究课和课后交 ...
- 湖南工程学院2021-2022算法编程挑战赛人工智能+X 湖南工程学院CSDN高校俱乐部换届完成
湖南工程学院2021-2022年度算法设计与编程挑战赛策划安排 一.活动目的: 针对各学院,响应教育部对人工智能.大数据专业人才培养的倡导,决定举办湖南工程学院2021-2022年度算法设计与编程挑战 ...
- python如何和硬件相结合_让创意照进现实,基于Python编程软硬件结合教学
2020年12月11日上午,南京市高中信息技术教研活动在南京师范大学附属扬子中学成功开展.本次活动以"让创意照进现实,基于Python编程软硬件结合教学"为主题,通过研究课和课后交 ...
- 马斯克如何颠覆航天? 1/5385成本,c++和python编程!
马斯克如何颠覆航天? 1/5385成本,c++和python编程! 5月31日,经历了重重困难,马斯克的SpaceX载人飞船成功发射,这是美国自2011年以来首次发射载人航天飞船,也是美国进入由商业主 ...
- CSS、JavaScript、PHP和Python编程合二为一
CSS, JavaScript,PHP And Python Programming All in One Course 在一门课程中学习Javascript.PHP和Python编程语言的CSS 你 ...
最新文章
- opencv imwrite()函数中 ImwriteFlags 的 cv.IMWRITE_JPEG_RST_INTERVAL(JPEG restart interval 重启间隔)是什么?
- ffmpeg源码实现抽取音频并保存 --C++实现
- python使用环境_使用python之环境管理
- :before 和 :after
- 领域应用 | 常识性概念图谱建设以及在美团场景中的应用
- day3 java的运算符及其注意问题
- MySQL查看和修改数据库存储目录
- python 代理服务器 身份验证_使用httplib2处理身份验证和代理服务器
- Python 标准库 —— xml
- 16进制数组转成10进制 qt_第五课_进制2
- Python图片与其矩阵数据互相转换
- 阻止系统自动睡眠的小软件,附C#制作过程
- java断言与断点_断言 - 游戏蛮牛 - Unreal中文翻译用户手册
- HTML设置图片为页面背景
- android 百度地图骑行路线颜色及宽度更改
- Android8.0适配问题java.lang.IllegalStateException: Only fullscreen opaque activities can request orie…
- input file选择图片后显示(FileReader)
- linux 无法生成图片大小,简单点。表演()在Linux上的ImageJ中生成错误
- 如何将PDF删除水印?PDF怎么删除水印
- 静息态功能磁共振成像:关于静息态功能连接和脑网络分析方法