Python编程挑战赛

news2024/11/28 10:42:11
alt
alt
alt

题1:给小朋友分糖,每人分到糖的数量不同,输入小朋友的数量,计算至少需要多少糖?

思路:第1个小朋友1颗糖,第2个小朋友2颗糖,第3个小朋友3颗糖,……第n个小朋友n颗糖,计算1+2+……+n的和即可。

第1种写法:不用Python高级函数

n = int(input())
r = 0
for i in range(1, n + 1):
    r = r + i
print(r)

第2种写法:用Python高级函数


def splitcandy(n):
    return sum(list(range(1,n+1)))
    
n = 10
print(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位数字来传递信息,同时为了防止信息泄露,需要将数字进行加密。数据加密的规则是:

  1. 每个数字都进行如下处理:该数字加上5之后除以10的余数,替换原数字;
  2. 将处理后第一位数字与第三位数字进行交换,第二位数字与第四位数字进行交换。

现在任意输入一个四位数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 = 1234
print(encode(n))

第2种写法:不用Python高级函数

n = 1234
r = ""
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,3
print(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,2
print('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 cunt
strng,n = 'abbcccdddd',2
print(repeat(strng,n))

写法2 思路一致

s = input()
n = int(input())
cc = set(s)
r = 0
for c in cc:
    if c * n in s:
        r = r + 1
print(r)

题8:当数字的位数高达上百位时,这样庞大的数字在计算机中的计算已经完全不能用简单的加减乘除来实现了,但是有时候对于这种高精度数字的处理也是编程中必不可缺的。

任意输入一个数字n(99999<n<999999),计算n的n次方(即连续n个n相乘)计算之后,最后的3位数字是多少?

【输入样例】 123456 【输出样例】 856

n = int(input())
n = n ** n
a = n % 10
b = n % 100 // 10
c = n % 1000 // 100
print(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 = 10
print(notFind(n))

写法2

n = int(input())
lst = [0] * n
jiange = 1
suoyin = 0
c = 0
while 1:
    lst[suoyin % n] = 1
    jiange = jiange + 1
    suoyin = suoyin + jiange
    c = c + 1
    if c == 100:
        break
for 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

alt

第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种写法 用高级函数

导入itertoolspermutations 条件判断过滤,保留符合每一个组合中第一个元素是 f

from itertools import permutations
def 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 = 3
print(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 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3708.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[数据结构]实现双向链表

作者&#xff1a; 华丞臧. 专栏&#xff1a;【数据结构】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 文章目录一、带头双向循环链表二、带头双向循环链表接口实现2.1 双向链表的初始化、打…

动态规划算法的题到底应该怎么做?思路教给你自己写

本文是我通过做题和借鉴一些前人总结的套路而得出的思路和方法&#xff0c;刚好这次CSDN第八周的周赛上出了三道动态规划的题目&#xff0c;我会结合题目对我的思路进行一个输出&#xff0c;会从最简单的一维dp开始讲解到二维dp&#xff0c;希望对你有帮助&#xff0c;有错误希…

MySQL数据库基础知识

今天是更新数据库的第一篇&#xff0c;关于数据库环境搭建问题博主先不在这里介绍了&#xff0c;博主今天是直接讲知识了&#xff0c;等以后的博客&#xff0c;博主再更新数据库搭建问题。在这里我们使用命令行式客户端&#xff0c;先不使用windows下的图形化界面&#xff0c;使…

ReadingTime-十一月

CV文章浅读_not_everday0x1105.CAViT for video object re-id 2022_中科院这个月主要是要学习pytorch和一些CV baseline的复现&#xff0c;搞搞毕设雏形&#x1f199; 以后还是把笔记写纸上要么写博客&#xff0c;不放本地了&#x1f628; 网页版小绿鲸zen好用 &#x1f603; …

峰会实录 | 基于StarRocks和腾讯云EMR构建云上Lakehouse

作者&#xff1a;腾讯云EMR业务负责人陈龙&#xff08;本文为作者在 StarRocks Summit Asia 2022 上的分享&#xff09; 我目前负责腾讯云EMR 的研发工作&#xff0c;此前先后在百度、支付宝做后端研发。2011年加入腾讯&#xff0c;先后参与了腾讯云Redis、腾讯云云数据库、Ap…

小米 Civi 2 (ziyi) 机型解锁bl 获取root权限教程 +其他机型参数对比+救砖

*********机型优点与其他机型参数对比***************** 小米 Civi 2 (ziyi) 国行版机型前置由3200万主摄3200万超广角组成的双摄是它最大的亮点&#xff0c;配有4颗柔光灯。自拍相当不错。他的后置主摄采用5000万像素相机&#xff0c;IMX766传感器&#xff0c;1/1.56英寸感光…

【MybatisPlus】CRUD操作,映射匹配兼容性,ID生成策略,逻辑删除,乐观锁

文章目录MybatisPlus简介一、数据层基本的开发1. 引入jar包2. 配置数据源3. 编写实体类4. 创建Dao接口5. 测试二、CRUD使用1. 查询2. 添加3. 删除4. 修改5. 分页查询三、条件查询1. 条件查询的方式2. 多条件查询四、映射匹配兼容性1. 表字段与编码属性设计不同步2. 编码中添加了…

矩阵理论复习(二)

内积空间的定义 模与内积 向量x和y的夹角 正交向量、正交组和正交矩阵 度量矩阵 基向量内积、度量矩阵、任意向量内积之间的关系 欧式空间的两个基对应的度量矩阵彼此合同 度量矩阵的行列式的几何问题 正交补子空间 内积空间子空间U与U的正交补子空间的直和 …

LeetCode 138. 复制带随机指针的链表

难度 中等 题目链接 示例&#xff1a; 解题思路&#xff1a; 首先&#xff0c;大家肯定会这样想&#xff1a;定义一个cur循环遍历&#xff0c;每次遍历一个&#xff0c;就malloc一个。 当遍历后面的时候&#xff0c;就开始尾插。 但现在有一个问题是&#xff1a;这个random指…

通信直放站基础知识

直放站的定义 直放站&#xff08;中继器&#xff09;属于同频放大设备&#xff0c;是指在无线通信传输过程中起到信号增强的一种无线电发射中转设备。直放站的基本功能就是一个射频信号功率增强器。直放站在下行链路中&#xff0c;由施主天线从现有的覆盖区域中拾取信号&#x…

《嵌入式 - 嵌入式大杂烩》CoreMark性能测试

1 CoreMark简介 CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)的Shay Gla-On于2009年提出的一项基准测试程序&#xff0c;CoreMark的主要目标是简化操作&#xff0c;并提供一套测试单核处理器核心的方法。测试标准是在配置参数的组合下单位时间内运行的Co…

【树莓派不吃灰系列】快速导航

目录1. 通用篇2. Python篇3. 编程IO篇❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2022-11-06 ❤️❤️ 本篇更新记录 2022-11-06 ❤️&#x1f389; 欢迎关注 &#x1f50e;点赞 &#x1f44d;收藏 ⭐️留言 &#x1f4dd;&…

Slave_IO_Running: No 的解决

原因&#xff1a; 两台主从数据库的uuid相同了&#xff08;没猜错的话&#xff0c;各位的第二台虚拟机都是克隆了第一台&#xff0c;然后就改了个ip对吧&#xff09;。 解决办法&#xff1a; 必须跟着步骤来&#xff0c;一步也不能多&#xff0c;更不能少&#xff0c;请仔细…

arcgis 生成切片并发布服务

需要准备&#xff1a; 1、需要进行切割的tif文件&#xff1b; 2、切片方案文件 需要确认&#xff1a; 1、tif文件的数据源坐标系&#xff1b; 2、现有切片方案能否满足需求&#xff1b; 3、部署的地图引擎是经纬度投影还是墨卡托投影&#xff1b; 具体操作流程&#xff1a; 1…

TCP/IP协议数据链路层

目录 一、数据链路层和网络层的关系 二、以太网 1、以太网格式 2、认识MTU 三、ARP协议 1、ARP协议的作用 2、ARP协议的工作流程 3、ARP数据报的格式 4、思考&#xff1a;浏览器中输入url后, 发生的事情&#xff08;经典面试题&#xff09; 一、数据链路层和网络层的…

通信行业的必备网站

今天突然看到一首诗感触满满&#xff1a; 官策作者陈京 生如蝼蚁&#xff0c;当有鸿鹄之志&#xff01; 命如纸薄&#xff0c;应有不屈之心&#xff01; 大丈夫生于天地间&#xff0c;岂能郁郁久居人下。 当以梦为马&#xff0c;不负韶华。 乾坤未定&#xff0c;你我皆是黑马&…

西安交大讲座-实际场景(3个)出发,用户检测方式,数据驱动的网络用户行为分析建模与异常检测

讲座搬运&#xff0c;侵删&#xff01; 目录 研究背景 研究问题 问题与挑战 网络舆情分析 政策法规知识图谱 构建利益方群体识别模型 系统 ​编辑 第二个工作-异常群体映射与定位 多源社交网络用户身份管理 不用场景的用户身份映射 多个平台关联 黑产检测 基于图模型…

基于FreeCAD的dxf转机械手代码的一种实现方法

dxf文件在2D图形中使用广泛&#xff0c;将图形文件自动转换为机械手可识别的轨迹代码是机械手全自动化中一个软件衔接节点。理想的轨迹自动化转换程序可以在电脑里面直接虚拟仿真生成机械手轨迹&#xff0c;简化现场人员机械手示教流程&#xff0c;在效率和远程支持上有着实际的…

2021 神经网络压缩 (李宏毅

首先&#xff0c;为什么需要对神经网络模型进行压缩呢&#xff1f;我们在之前的课程中介绍过很多大型的深度学习模型&#xff0c;但当我们想要将这些大模型放在算力比较小的边缘设备或者其他IoT设备里面&#xff0c;就需要对大模型进行压缩。 Lower latency&#xff1a;低时延 …

刷题笔记之八(字符串通配符+参数解析+计算日期到天数)

目录 1. dateadd(datepart&#xff0c;number&#xff0c;date)函数是在日期中添加或减去指定的时间间隔 2. DML数据库操作语言负责数据的增删查改 3. 修改表结构的关键字都是alter table 表名&#xff0c;再加修改的语句 4. between and条件查询范围前闭后闭 5. 使用索引…