2021蓝桥杯初中组6月比赛试题

news/2024/11/27 8:32:40/

蓝桥杯初中python试题

  • 编程题
    • 自我评价
    • 题目 1
    • 题目 2
    • 题目 3
    • 题目 4
    • 题目 5
    • 题目 6

编程题

作者:Jeefy,xsh_Fu
邮箱:jeefy163@163.com / jeefyol@outlook.com
github: jeefies@github.com

源代码都在文章之中,仅供参考

自我评价

对于我这个初二的初中生来说还是很简单的
3道比较常规的题和3道算法题(也不完全是)

总而言之,每一个的思路都比较清晰,运算方法是我所能想到最好的方法了。
题目都是从考试试题上抄下来的,没有改动。

题目 1

给定N个数字(包含整数和浮点数),找到N个数字中最大的数字。所给数字以英文逗号分割。
分析 :
利用内置max函数实现寻找最大值
在最后判断是否应该以整数形式输出

# 先把所有数字转为浮点型
m = max(map(float, input().split(',')))
# 用除以1的余数判断是否要转为整数输出
print(m if m % 1 else int(m))

题目 2

给定一个合数N,将N分解质因数后,输出其质因数个数。
分析 :
分解质因数可以参考短除法的实现方式,一个一个数从小到大一个一个除

补充:当一个数已经没有了比N小的质因数时,这个数便不会被任何一个小于N2的合数整除

i = int(input())
def count(i):# _i 作为 i 的副本,因为之后 i 会被改变# n 为结果个数# m 为除数,质数从2开始(1既不是合数,也不是质数)_i, n, m = i, 0, 2# 其实更好的是 m < math.ceil(math.sqrt(_i)) + 1# 但是没有太大必要,除非很注重速度while m < _i:if i % m == 0: # 能被一个质数整除i /= mn += 1# 再次看看能否被这个数整除else:# 不能被整除,下一个树m += 1return n

题目 3

给定一个含有字母和数字的字符串,输出此字符串中最长的数字子串的长度。
如:字符串“a2a22d”,最长的数字子串为22,长度为2,故输出2。字符串“lq12h567j765”,最长的数字子串为567和765,长度都为3,故输出3。
分析 :
其实可以用正则表达式来寻找所有数字子串
恰巧可以用内置re库实现

import re
# 寻找数字连续出现的子串
li = re.findall("\d+", input())
# 将每一个子串变成其长度,利用max寻找最大值
print(max(map(len, li)))

题目 4

给定一个大于2的偶数,在所有满足可以由两个质数相加得到这个特点的质数对中,找出两个质数差值最小的一对,并将差值输出。
(差值为大数减小数的值,两个质数相等时差值为0)
分析:
两数相加相等,求差最小,所以从中间开始,向两边找满足是质数的两个数

import mathdef check(i):# 判断是否是质数m = math.ceil(math.sqrt(i)) + 1#由于range是后闭环,所以必须要+1才能取到最大的到# 如果想要偷懒,把m换成i就行,与第2题类似for j in range(2, m):if i % j == 0:return Falsereturn Truedef get(i):# 获得差为0或1的最中间的两个数# left 永远小于 rightleft = i // 2right = i - left# 循环直到 left = 2for _ in range(2, left+1):if check(left) and check(right):return right - leftleft -= 1right += 1return i - 1print(get(int(input())))

题目 5

孙悟空的金箍棒可以变高也可以变矮还可以变出多个金箍棒。
这天孙悟空无聊变出了N个长短不一的金箍棒,这些金箍棒之间相互吵闹,攀比谁高。
当孙悟空每次手指其中一个金箍棒时,这个金箍棒高度不变,其他的金箍棒高度都会增加1。
只有当所有金箍棒高度都一样时,他们之间才不相互吵闹,也不会再增加高度,保持静止。

分别给定N个金箍棒的初始高度,请你帮助孙悟空计算一下至少手指几次可以让N个金箍棒高度都一样。

例如: 有3个金箍棒,初始高度分别为2,3,4。
第一次手指第三个金箍棒,第三个金箍棒高度不变,第一和第二个金箍棒高度分别增加1,变为3,4,4;
第二次手指第二个金箍棒,第二个金箍棒高度不变,第一和第三个金箍棒高度分别增加1,变为4,4,5;
第三次手指第三个金箍棒,第三个金箍棒高度不变,第一和第二个金箍棒高度分别增加1,变为5,5,5;
这时3个金箍棒的高度都为5,手指3次后金箍棒高度一样。所以至少手指3次才能使金箍棒高度都一样。

输入描述
输入N个非全部相等的正整数(N个数不全部相等,2<N<31)
且之间以英文逗号隔开,分别表示N个金箍棒的初始高度

输出描述
输出一个正整数,表示至少手指几次才能使金箍棒高度都一样

分析:
实际上就是给你一组数字,每一次操作都可以让一个数之外的所有数字加一(或者可以看成让一个数减一
多少次操作之后,可以让整个数组相同
所以我们的思路就是让所有数减少,到最小数的大小

li = list(map(int, input().split(',')))
m = min(li)
count = sum(li) - m * len(li)
print(count)

这是思路理的非常清楚后的代码。

或者我们可以按照相对常规一点的思路(还是像我说的一样,可以看作让一个数减少

li = list(map(int, input().split(',')))
li.sort() # 从小到大排序n = 0 # 最后的结果
def add(x):li[x + 1] -= 1for i in range(len(li) - 1):x = li[i + 1] - li[i] # 把每一个都变成上一个数所需要x次操作# 然后就实际操作for _ in range(x): add(i)n += xprint(n)

题目 6

首先在指定坐标的方格内放置红色的花卉(每个方格放一盆)
在(100x100)的坐标系之中
完成后,找出最多有多少盆红色花卉在同一条直线上。
(同一直线包含同一列、同一行、同一对角线,红色花卉可以连续也可以不连续)

输入描述
输入n对正整数,每一对正整数之间以一个空格隔开,
代表放置红色花卉的方格位置。每对正整数中的两个数字以英文逗号隔开

输出描述
输出最多有多少盆红色花卉在同一条直线上

分析:
这个东西啊,我确实不知道应该如何快速实现,不过这个操作非常简单,所以我们只需要硬算就可以了

matrix = [[0 for _ in range(100)] for _ in range(100)]def proc(stri):# 把输入的坐标变成1def put(strin):x, y = map(int, strin.split(','))# 注意下标与坐标之间相差1matrix[y - 1][x - 1] = 1for p in stri.split():put(p)def result(matrix):m = 0# 首先是横向寻找最大for i in range(100):s = sum(matrix[i])if s > m:m = s# 再是竖着寻找(一列一列的)for i in range(100):s = sum(matrix[x][i] for x in range(100))if s > m:m = s# 接下来是斜着# 这两个循环是向左倾斜for i in range(100):s = sum(matrix[i + x][99 - x] for x in range(100 - i))if s > m:m = sfor i in range(100):s = sum(matrix[x][i - x] for x in range(i))if s > m:m = s# 剩下两个是向右倾斜for i in range(100):s = sum (matrix[x][i + x] for x in range(100 - i))if s > m:m = sfor i in range(100):s = sum (matrix[i + x][x] for x in range(100 - i))if s > m:m = s# 最后的结果就出来了return m# 处理输入到坐标数组之中,数组初始所有为0
# 只有有东西的地方为1
proc(input())
# 最后的结果
print(result(matrix))

以上皆为我个人解题思路,不代表标准答案。仅供参考。

转载请注明出处


http://www.ppmy.cn/news/878436.html

相关文章

自学是门手艺

自学是门手艺 One has no future if one couldnt teach themself. 作者&#xff1a;李笑来 特别感谢霍炬&#xff08;virushuo&#xff09;、洪强宁&#xff08;hongqn) 两位良师诤友在此书写作过程中给予我的巨大帮助&#xff01; 关于作者 李笑来&#xff0c;投资人&#…

Android 淘气三千传之 —— 插件化的一点理解(上)

插件化 这一篇主要是个人对插件化涉及到的一些基础知识的理解,内容都比较简单: 包括以下内容: 目录: 1、类加载机制 2、Binder机制 3、APP、四大组件的启动流程 4、APK安装过程 5、资源的加载过程 6、Hook机制 7、OOP 8、面向切面编程 9、代理模式 10、插件化…

shell 匹配字符串 (eg.获得配置文件的值 )

第一种&#xff1a; source/data/deploy/draco/env.properties SERVER_ID$SERVERID 第二种&#xff1a; cat /data/deploy/draco/env.properties |grep SERVERID|grep -E -o "[0-9]" 第三种&#xff1a; cat /data/deploy/draco/env.properties |grep SERVERID|awk -…

JavaScript------JS相关难题,做对一半算你牛牪犇

1. parseInt 遇上 map [1,2,3].map(parseInt)// A. ["1", "2", "3"] // B. [1, 2, 3] // C. [0, 1, 2] // D. [1, NaN, NaN]答案是D。实际上返回的结果是 [1, NaN, NaN] &#xff0c; 因为 parseInt 函数只需要两个参数 parseInt(value, radix)…

饥荒服务器怎么显示帧数,饥荒的fps值怎么显示 | 手游网游页游攻略大全

发布时间:2016-06-17 淘气值与坎普斯大家知道吗?今天笔者就为大家带来了饥荒淘气值(顽皮值)与坎普斯打法图文详解,非常不错的内容哦,小伙伴们你们知道这些吗?下面赶快跟我一起来看看吧. 淘气值(顽皮值) 淘气值,饥荒中的一项隐 ... 标签: 攻略 饥荒 生存技巧 BOSS怪物 发布时…

【无标题】 2022淘宝天猫双十一喵果总动员玩法攻略

天猫双11全球狂欢节&#xff0c;双11喵果总动员活动规则&#xff01; 超级红包领取方法1&#xff1a;打开手机淘宝搜索&#xff1a;能省就省50&#xff0c;即可领取1111超级红包 一、活动时间 整体活动时间为 2022年10月25日00:00:00—2022年11月11日21:59:59&#xff0c;其…

淘宝双十一喵果总动员之喵树大挑战玩法攻略

淘宝双十一喵果总动员之喵树大挑战玩法攻略&#xff01; 超级红包领取方法&#xff1a;手机淘宝搜索&#xff1a;能省就省50&#xff0c;即可领取红包。 1&#xff09;喵树大挑战时间&#xff1a;2022年10月28日00:00:00——2022年11月9日21:59:59 2&#xff09;参与挑战条件…

阿里包下游轮送剁手党出国游!会员体系升级背后故事多

阿里会员体系要实现用户、平台、商家三方共赢&#xff0c;会员的福利还会增加。 目前&#xff0c;淘气值最高的是4862分。淘气值超过2500分可获邀成为APASS会员&#xff1b;1000分以上是超级会员&#xff1b;然后是普通会员。 这或许是中国“骨灰级剁手党”之间最盛大的一次聚会…