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

第一题 卫星发射

试题名称:卫星发射

时间限制: 1.0s

内存限制: 128.0MB

【问题描述】

在 2050 年卫星发射技术已经得到极大发展,我国将援助 A 国建立远轨道卫星导航系统,该项目计划第一个天发射一颗卫星;之后两天(第二天和第三天),每天发射两颗卫星;之后三天(第四、五、六天),每天发射三颗卫星;之后四天(第七、八、九、十天),每天发射四颗卫星......;这种卫星发射模式会一直延续到项目完成:当连续 n 天每天发射 n 颗卫星后,航天局在之后的连续 n+1 天里,每天发射 n+1 颗卫星。

请计算在前 k 天里,一共发射了多少卫星。

【输入描述】

一个正整数 k,表示发射卫星的天数。

【输出描述】

一个正整数,即发射卫星的总数。

【输入样例】

6

【输出样例】

14

【样例 1 说明】

航天局第一天发射一颗卫星;第二天和第三天,每天发射两颗卫星;第四、五、六天,每天发射三颗卫星。因此一共发射 1+2+2+3+3+3=14 颗卫星。

【数据规模】

对于 100%的数据, 1≤k≤10^4。

python 复制代码
k=int(input())
n=1
wx=0
while n<=k:
    wx+=n*n
    k-=n
    n+=1
if k!=0:
    wx+=n*k
print(wx)

第二题 伯罗奔尼撒箭阵

试题名称:伯罗奔尼撒箭阵

时间限制: 1.0s

内存限制: 128.0MB

【问题描述】

在伯罗奔尼撒战争中,为了应对敌方的箭阵,指挥官正在研究一种新的列队方式,为了方便士兵理解,抽象如下:给出正整数 n,要求按如下方式构造数列:

  1. 只有一个数字 n 的数列是一个合法的数列。
  2. 在一个合法的数列的末尾加入一个正整数,但是这个正整数不能超过该数列最后一项的一半,可以得到一个新的合法数列。
    请你帮助指挥官求出,一共有多少个合法的数列。两个合法数列 a, b 不同当且仅当两数列长度不同或
    存在一个正整数 i≤∣a∣,使得 ai ≠bi。
    【输入描述】
    输入只有一行一个整数,表示 n。
    【输出描述】
    输出一行一个整数,表示合法的数列个数。
    【输入样例】
    6
    【输出样例】
    6
    样例 1 解释
    满足条件的数列为:
    6
    6,1
    6,2
    6,3
    6,2,1
    6,3,1
    【数据规模】
    数据保证,对于全部的测试点,保证 1≤n≤10^3。
python 复制代码
def f(n):
    global count
    b=n//2
    count+=b
    for i in range(2,b+1):
        f(i)

count=1
n=int(input())
f(n)
print(count)

第三题 天空之城的树

试题名称:天空之城的树

时间限制: 1.0s

内存限制: 128.0MB

【问题描述】

拉姆达人在修建天空之城时,主要是依赖巨大的飞行石去维持悬空状态,依赖强壮的大树去作为建筑物的框架,假设大树是一棵有 n(n≤10^3)个结点的二叉树。给出每个结点的两个子结点编号(均不超过 n),建立一棵二叉树(根节点的编号为 1),如果是叶子结点,则输入 0 0。

建好这棵二叉树之后,请帮拉姆达设计师求出它的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。

【输入描述】

第一行一个整数 n,表示结点数。

之后 n 行,第 i 行两个整数 l、r,分别表示结点 i 的左右子结点编号。若 l=0 则表示无左子结点,r=0 同理。

【输出描述】

一个整数,表示最大结点深度。

【输入样例】

7

2 7

3 6

4 5

0 0

0 0

0 0

0 0

【输出样例】

4

【数据规模】

数据保证,对于全部的测试点,保证 1≤n≤10^3。

python 复制代码
"""
解题思路:
数据范围在10^3之内,可以使用深度优先搜索计算结果
使用两个数组分别记录左右子树情况
分别搜索左右子树,不断寻找最大深度
注意输入的数据需要按空格拆分
"""
depth=0
def dfs(node,dep):
    if node==0:
        return
    global depth
    depth=max(depth,dep)
    dfs(lst_l[node-1],dep+1)
    dfs(lst_r[node-1],dep+1)  

n=int(input())
lst=[list(map(int,input().split()))for _ in range(n)]
lst_l=[i[0] for i in lst]
lst_r=[i[1] for i in lst]
dfs(1,1)
print(depth)

第四题 最后的王者

试题名称:最后的王者

时间限制: 1.0s

内存限制: 128.0MB

【问题描述】

学校的编程兴趣班提出了一个有趣的问题:假设键盘输入一个高精度的正整数 n(不超过 250 位),去掉其中任意 k 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 n 和 k,寻找一种方案使得剩下的数字组成的新数最小。试着帮他们给出解决方案。

【输入描述】

输入两行正整数。

第一行输入一个高精度的正整数 n。

第二行输入一个正整数 k,表示需要删除的数字个数。

【输出描述】

输出一个整数,最后剩下的最小数。

【输入样例】

175438

4

【输出样例】

13

python 复制代码
s=input()
l=len(s)
s=s+"0"
k=int(input())
need=l-k
while k>0:
    for i in range(l):
        if s[i]>s[i+1]:
            s = s[:i]+ s[i+1:]
            #print(s)
            break
    l=l-1
    k=k-1
print(int(s[:need]))

第五题 矩阵取数

试题名称:矩阵取数

时间限制: 1.0s

内存限制: 128.0MB

【问题描述】

淘淘设计了一个矩阵取数游戏:对于一个给定的 n×m 的矩阵,矩阵中的每个元素 ai,j 均为非负整数。游戏规则如下:

  1. 每次取数时须从每行各取走一个元素,共 n 个。经过 m 次后取完矩阵内所有元素;
  2. 每次取走的各个元素只能是该元素所在行的行首或行尾;
  3. 每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元素值 ×2^i,其中 i 表示第 i 次取数(从 1 开始编号);
  4. 游戏结束总得分为 m 次取数得分之和。
    帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。
    【输入描述】
    输入文件包括 n+1 行:
    第一行为两个用空格隔开的整数 n 和 m。
    第 2∼n+1 行为 n×m 矩阵,其中每行有 m 个用单个空格隔开的非负整数。
    【输出描述】
    输出文件仅包含 1 行,为一个整数,即输入矩阵取数后的最大得分。
    【输入样例】
    2 3
    1 2 3
    3 4 2
    【输出样例】
    82
    【数据规模】
    对于 60% 的数据,满足 1≤n,m≤30,答案不超过 10^16。
    对于 100% 的数据,满足 1≤n,m≤80,0≤ai,j≤1000。
python 复制代码
def getSum(lst,c=1):
    global s
    if not lst:
        return s
    if lst[0]<lst[-1]:
        s+=lst.pop(0)*(2**c)
    else:
        s+=lst.pop(-1)*(2**c)
    return getSum(lst,c+1)

n,m=map(int,input().split())
bs=0
for i in range(n):
    s=0
    lst=list(map(int,input().split()))
    bs+=getSum(lst)
print(bs)
相关推荐
叩码以求索21 分钟前
浅谈:前序遍历反转法求解N叉树的后序遍历
算法
lancyu30 分钟前
关于多轮对话机器人的上下文Token优化和解决方案
人工智能·python·深度学习·机器学习·chatgpt·机器人·prompt
草莓橙子碗1 小时前
Claude 使用指南
开发语言·python
工具分享1 小时前
陪跑跟品爆单AI选品助手,高效跟品会赔本吗?
人工智能·python
COOLMO研究AI1 小时前
Python 如何实现 AI API 的提示词(Prompt)版本管理与热更新
人工智能·python·prompt
老郑聊AI业财智造1 小时前
Transformer 技术架构与源码分析
人工智能·python·深度学习·语言模型·架构·transformer·软件工程
北风toto1 小时前
中缀、前缀、后缀表达式
算法·软件设计师
程序员三藏2 小时前
自动化测试用例编写详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
听取WA声一片(无恶意)2 小时前
CSP-J/CSP-S 深度优先搜索(DFS)完全讲义
c++·算法·深度优先
码流怪侠2 小时前
2026年8月GitHub热榜深度拆解:Agent Skills席卷开源圈,一个“技能包“收割5万星
算法·程序员·github