第二届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
相关推荐
qq_433554546 分钟前
C++ 选择排序、冒泡排序、插入排序
数据结构
python_tty7 分钟前
排序算法(一):冒泡排序
数据结构·算法·排序算法
测试199830 分钟前
软件测试之压力测试总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·压力测试
皮蛋sol周42 分钟前
嵌入式学习C语言(八)二维数组及排序算法
c语言·学习·算法·排序算法
李昊哲小课1 小时前
销售数据可视化分析项目
python·信息可视化·数据分析·matplotlib·数据可视化·seaborn
森焱森1 小时前
单片机中 main() 函数无 while 循环的后果及应对策略
c语言·单片机·算法·架构·无人机
学不动CV了1 小时前
ARM单片机OTA解析(二)
arm开发·数据结构·stm32·单片机·嵌入式硬件
烛阴1 小时前
带参数的Python装饰器原来这么简单,5分钟彻底掌握!
前端·python
kk在加油1 小时前
Redis基础数据结构
数据结构·数据库·redis
平和男人杨争争1 小时前
机器学习12——支持向量机中
算法·机器学习·支持向量机