第二届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
相关推荐
醒着的睡着的人1 分钟前
Python---re模块(正则表达式)
python·正则表达式
chusheng18405 分钟前
Python 正则表达式进阶用法:量词与范围
python·mysql·正则表达式
殷丿grd_志鹏7 分钟前
Python爬虫知识体系-----正则表达式-----持续更新
爬虫·python·正则表达式
hummhumm31 分钟前
第 10 章 - Go语言字符串操作
java·后端·python·sql·算法·golang·database
chusheng184035 分钟前
Python 正则表达式进阶用法:分组与引用详解
数据库·python·正则表达式
Jeffrey_oWang35 分钟前
软间隔支持向量机
算法·机器学习·支持向量机
denghai邓海1 小时前
红黑树删除之向上调整
python·b+树
算法歌者1 小时前
[算法]入门1.矩阵转置
算法
励志前端小黑哥1 小时前
有了Miniconda,再也不用担心nodejs、python、go的版本问题了
前端·python
用户8134411823611 小时前
分布式训练
算法