第二届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
相关推荐
青い月の魔女8 分钟前
数据结构初阶---二叉树
c语言·数据结构·笔记·学习·算法
一个不秃头的 程序员12 分钟前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
susu108301891117 分钟前
python实现根据搜索关键词爬取某宝商品信息
爬虫·python
我要出家当道士33 分钟前
Nginx单向链表 ngx_list_t
数据结构·nginx·链表·c
喜欢猪猪44 分钟前
Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
android·python·adb
海绵波波1071 小时前
flask后端开发(1):第一个Flask项目
后端·python·flask
林的快手1 小时前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode
千天夜1 小时前
多源多点路径规划:基于启发式动态生成树算法的实现
算法·机器学习·动态规划
从以前1 小时前
准备考试:解决大学入学考试问题
数据结构·python·算法
Ven%1 小时前
如何修改pip全局缓存位置和全局安装包存放路径
人工智能·python·深度学习·缓存·自然语言处理·pip