第二届CCF PTA Python编程培训师资认证(P试卷)

第一题 一年天数

试题编号:2022-12-0101

试题名称:一年天数

时间限制: 1.0s

内存限制: 128.0MB

【问题描述】

接受用户输入的年份(公元纪年),输出该年的天数。

闰年的判定规则为:

(1)普通闰年:年份为 4 的倍数但非 100 的倍数的,为闰年;

(2)世纪闰年:年份为 100 的倍数但非 400 的倍数的,为平年(非闰年)。

【输入描述】

输入公元纪年的年份。年份应晚于(大于)1582 年,早于(小于)999999年。

【输出描述】

该年的天数。平年有 365 天,闰年有 366 天。

【输入样例】

2022

【输出样例】

365

python 复制代码
y=int(input())
if y%4==0 and y%100!=0 or y%400==0:
    print(366)
else:
    print(365)

第二题 逆序数

试题编号:2022-12-0202

试题名称:逆序数

时间限制: 1.0s

内存限制: 128.0MB

【问题描述】

所谓逆序数,即将该整数的各位数字逆序排列所得到的新整数。例如,1536 的逆序数是 6351,1024 的逆序数是 4201。说明:输入的这个正整数末尾保证不会是 0,但是中间有可能有 0。

【输入描述】

输入一个正整数(其值不超过 1000000),其末尾保证不会是 0,但中间有可能有 0

【输出描述】

输出一个正整数,表示结果。

【输入样例】

1536

【输出样例】

6351

python 复制代码
s=input()
print(s[::-1])

第三题 研究生入学考试

试题编号:2022-12-0203

试题名称:研究生入学考试

时间限制: 1.0s

内存限制: 128.0MB

【问题描述】

一年一度的研究生入学考试结束了,招生办的老师打算对所有的考生进行成绩排名,从而确定复试的名单。

排名的规则如下:

(1)以入学考试的平均成绩作为排名的依据(分数均为整数);

(2)对于考生 A,如果总共有 K 个考生的平均成绩比 A 要高,那么 A 的排名为 K+1;

(3)如果考生 A 和考生 B 的平均成绩相同,则他们的排名也相同。招生办的老师希望你能编写一个程序,来帮助他们解决这个问题。

【输入描述】

第一行为一个整数 N(1≤N≤1000),表示考生的人数。随后有 N 行,每一行有两个非负整数描述了一位考生的信息,依次为准考证号和平均成绩。其中,准考证号不超过 8 位,平均成绩不超过 200。

【输出描述】

输出共有 N 行,按照名次从高到低每行输出一位考生的信息,包括名次、准考证号和平均成绩。如果两位考生的名次相同,则以准考证号为序,考号小的在前,大的在后。

【输入样例】

5

1000 95

1001 100

1002 94

1006 95

1007 100

【输出样例】

1 1001 100

1 1007 100

3 1000 95

3 1006 95

5 1002 94

python 复制代码
n=int(input())
bns=[list(map(int,input().split())) for _ in range(n)]
bns.sort(reverse=True,key=lambda bns:bns[1])
mark=0
for i in range(len(bns)):
    if i==0:
        print(1,bns[i][0],bns[i][1])
        mark_i=1
    else:
        if bns[i][1]==bns[i-1][1]:
            print(mark_i,bns[i][0],bns[i][1])
        else:
            print(i+1,bns[i][0],bns[i][1])
            mark_i=i+1

第四题 字频统计

试题编号:2022-12-0104

试题名称:字频统计

时间限制: 3.0s

内存限制: 128.0MB

【问题描述】

接受用户输入的纯汉字字符串(不含数字、标点符号、特殊符号和其他语言字符),统计各个汉字的出现次数。按出现次数的从大到小顺序输出前 10 个汉字及它们的出现次数。不足 10 个汉字时全部输出。

【输入描述】

纯汉字字符串(UTF-8 编码格式),字数不超过 2048,不含数字、标点符号、特殊符号和其他语言字符。

【输出描述】

前 10 个出现次数最多的汉字及其出现次数(出现次数的场宽为 5 个字符)。不足 10 个汉字时全部输出。

【输入样例】

明月几时有把酒问青天不知天上宫阙今夕是何年我欲乘风归去又恐琼楼玉宇高处不胜寒起舞弄清影何似在人间转朱阁低绮户照无眠不应有恨何事长向别时圆人有悲欢离合月有阴晴圆缺此事古难全但愿人长久千里共婵娟

【输出样例】

有: 4

不: 3

何: 3

人: 3

月: 2

时: 2

天: 2

事: 2

长: 2

圆: 2

python 复制代码
s=input()
d={}
for c in s:
    d[c]=s.count(c)
ns=[[i,d[i]] for i in d]
ns.sort(reverse=True,key=lambda ns:ns[1])
for i in range(10):
    print(ns[i][0]+":"+"%5d"%ns[i][1])

第五题 连续可表数列

试题编号:2022-12-0105

试题名称:连续可表数列

时间限制: 30.0s

内存限制: 128.0MB

【问题描述】

【输入描述】

有穷整数数列的内容(元素个数 100 以内),相邻元素以空格分隔。

【输出描述】

该有穷整数数列 m-如连续可表,输出其最大 m 值,否则输出 0。

【输入样例】

1 2 3 4

【输出样例】

7

python 复制代码
"""
有穷整数数列的示例:
1,2,3,4,5:这是一个包含5个正整数的有穷数列。
0,-1,-2,-3,-4:这是一个包含5个负整数的有穷数列。
1,-1,2,-2,3,-3:这是一个交替出现正整数和负整数的有穷数列。

【问题分析】
1、枚举所有的区间端点,并计算区间和
2、将区间和保存在set集合中
3、依次1到len(set)这些数是否存在set集合中
"""
ns=list(map(int,input().split()))
ns_len=len(ns)
rs=set()
rs.update(ns)  #集合一次添加多个元素(以[]形式)   #集合添加一个元素用add()
#print(rs)
for i in range(ns_len):
    for j in range(i+1,ns_len):
        rs.add(sum(ns[i:j+1]))
        #print(rs)
for i in range(1,len(rs)+2): #+2是为了避免1~len(rs)全在集合内的情况,更保险
    if i not in rs:
        print(i-1)
        break
相关推荐
湫ccc22 分钟前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe1 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin1 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
哭泣的眼泪4081 小时前
解析粗糙度仪在工业制造及材料科学和建筑工程领域的重要性
python·算法·django·virtualenv·pygame
湫ccc2 小时前
《Python基础》之基本数据类型
开发语言·python
Microsoft Word2 小时前
c++基础语法
开发语言·c++·算法
天才在此2 小时前
汽车加油行驶问题-动态规划算法(已在洛谷AC)
算法·动态规划
drebander3 小时前
使用 Java Stream 优雅实现List 转化为Map<key,Map<key,value>>
java·python·list
莫叫石榴姐3 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
威威猫的栗子3 小时前
Python Turtle召唤童年:喜羊羊与灰太狼之懒羊羊绘画
开发语言·python