第十三届蓝桥杯省赛Python-B组

第十三届蓝桥杯省赛Python组

试题 A: 排列字母---->5分

【问题描述】

小蓝要把一个字符串中的字母按其在字母表中的顺序排列。
例如,LANQIAO排列后为AAILNOQ
又如,GOODGOODSTUDYDAYDAYUP排列后为AADDDDDGGOOOOPSTUUYYY
请问对于一下字符串,排列之后字符串是什么?
WHERETHEREISAWILLTHEREISAWAY

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个由大写字母组成的字符串,在提交答案时只填写这个字符串,填写多余的内容将无法得分

试题 B: 寻找整数---->5分

【问题描述】

有一个不超过1017的正整数n,知道这个数除以2至49后的余数如下表所示,求这个正整数最小是多少。
在这里插入图片描述

试题 C: 纸张尺寸---->10分

【问题描述】

在ISO国际标准中定义了A0纸张的大小为1189mm×841mm,将A0纸沿长边对折后为A1纸,大小为841mm×594mm,在对着的过程中长度直接取下整(实际裁剪时可能有损耗)。将A1纸沿长边对折后为A2纸,以此类推。
输入智障的名称,请输出纸张的大小。

【输入格式】

输入一行包含一个字符串表示纸张的名称,该名称一定是A0、A1、A2、A3、A4、A5、A6、A7、A8、A9之一

【输出格式】

输出两行,每行包含一个整数,依次表示长边和短边的长度。

【样例输入1】

A0

【样例输出1】

1189
841

【样例输入2】

A1

【样例输出2】

841
594

试题 D: 数位排序---->10分

【问题描述】

小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。
例如,2022排在409前面,因为2022的数位之和是6,小于409的数位之和13.
又如,6排在2022前面,因为他们的数位之和相等,而6小于2022.
给定正整数n,m,请问对1到n采用这种方法排序时,排在第m个的元素是多少

【输入格式】

输入第一行包含一个正整数n。
第二行包含一个正整数m。

【输出格式】

输出一行包含一个整数,表示答案。

【样例输入】

13
5

【样例输出】

3

【样例说明】

1-13的排序为:1,10,2,11,3,12,4,13,5,6,7,8,9.第5个数为3。

【评测用例规模与约定】

对于30%的评测用例,1 ≤ m ≤ n ≤ 300
对于50%的评测用例,1 ≤ m ≤ n ≤ 1000
对于所有评测用例,1 ≤ m ≤ n ≤ 106

试题 E: 蜂巢---->15分

【问题描述】

蜂巢由大量的六边形拼接而成,定义蜂巢中的方向为:0表示正西方向,1表示西偏北60°,2表示东偏北60°,3表示正东,4表示东偏南60°,5表示西偏南60°。
对于给定的一点O,我们以O为原点定义坐标系,如果一个点A由O点先向d方向走p步再向(d+2)mod6方向(d的顺时针120°方向)走q步到达,则这个点的坐标定义为(d,p,q)。在蜂窝中,一个点的坐标可能有多种。
下图给出了点B(0,5,3)和C(2,3,2)的示意。
在这里插入图片描述
给定点(d1,p1,q1)和点(d2,p2,q2),请问他们之间最少走多少步可以到达?

【输入格式】

输入一行包含六个整数d1,p1,q1,d2,p2,q2表示两个点的坐标,相邻两个整数之间使用一个空格分隔。

【输出格式】

输出一行包含一个整数表示两点之间最少走多少步可以到达

【样例输入】

0 5 3 2 3 2

【样例输出】

7

【评测用例规模与约定】

对于25%的评测用例,p1,p2 ≤ 103
对于50%的评测用例,p1,p2 ≤ 105
对于75%的评测用例,p1,p2 ≤ 107
对于所有评测用例,0 ≤ d1,d2 ≤ 5,0 ≤ q1 < p1 ≤ 109,0 ≤ q2 < p2 ≤ 109

试题 F: 消除游戏---->15分

【问题描述】

在一个字符串S中,如果Si = Si-1 且 Si ≠ Si+1,则称Si和Si+1为边缘字符。如果Si ≠ Si-1 且 Si = Si+1,则Si-1和Si也称为边缘字符。其他的字符都不是边缘字符。
对于一个给定的字符串S,一次操作可以一次性删除该字符串中的所有边缘字符(操作后可能产生新的边缘字符)。
请问经过264次操作后,字符串S变成了怎样的字符串,如果结果为空则输出EMPTY。

【输入格式】

输入一行包含一个字符串S。

【输出格式】

输出一行包含一个字符串表示答案,如果结果为空则输出EMPTY。

【样例输入1】

edda

【样例输出1】

EMPTY

【样例输入2】

sdfhhhhcvhhxcxnnnnshh

【样例输出2】

s

【评测用例规模与约定】

对于25%的评测用例,|S| ≤ 103,其中|S|表示S的长度
对于50%的评测用例,|S|~ ≤ 104
对于75%的评测用例,|S| ≤ 105
对于所有评测用例,|S| ≤ 106,S中仅含小写字母

试题 G: 全排列的价值---->20分

【问题描述】

对于一个排列A=(a1,a2…an),定义价值ci为a1至ai-1中小于ai的数的个数,即bi=|{aj|j < i ,aj<ai}|。定义A的价值为∑ni=1Ci
给定n,求1至n的全排列中所有排列的价值之和。

【输入格式】

输入一行包含一个整数n。

【输出格式】

输出一行包含一个整数表示答案,由于所有排列的价值之和可能很大,请输出这个数除以998244353的余数。

【样例输入1】

3

【样例输出1】

9

【样例输入2】

2022

【样例输出2】

593300958

【样例说明】

(1,2,3):0+1+2=3;
(1,3,2):0+1+1=2;
(2,1,3):0+0+2=2;
(2,3,1):0+1+0=1;
(3,1,2):0+0+1=1;
(3,2,1):0+0+0=0;
故总和为3+2+2+1+1=9

【评测用例规模与约定】

对于40%的评测用例,n ≤ 20
对于70%的评测用例,n ≤ 500
对于所有评测用例,2 ≤ n ≤ 106

试题 H: 技能升级---->20分

【问题描述】

小蓝最近正在玩一款RPG游戏。他的角色一共有N个可以加攻击力的技能。其中第i个技能首次升级可以提升Ai;点攻击力,以后每次升级增加的点数都会减少Bi。[Ai/Bi](上取整)次之后,再升级该技能将不会改变攻击力。
现在小蓝可以总计升级M次技能,他可以任意选择升级的技能和次数。请你计算小蓝最多可以提高多少点攻击力?

【输入格式】

输入第一行包含两个整数N和M。
以下N行每行包含两个整数Ai和Bi

【输出格式】

输出一行包含一个整数表示答案。

【样例输入】

3 6
10 5
9 2
8 1

【样例输出】

47

【评测用例规模与约定】

对于40%的评测用例,1≤N,M≤1000
对于60%的评测用例,1 ≤ N ≤ 104,1 ≤ M ≤ 107
对于所有评测用例,1 ≤ N ≤ 105,1 ≤ M ≤ 2 ×109,1 ≤ Ai,Bi ≤ 106

试题 I: 最长不下降子序列---->25分

【问题描述】

给定一个长度为N的整数序列:A1A2…AN。现在你有一次机会,将其中连续的K个数修改成任意一个相同值。请你计算如何修改可以使修改后的数列的最长不下降子序列最长,请输出这个最长的长度。
最长不下降子序列是指序列中的一个子序列,子序列中的每个数不小于在它之前的数。

【输入格式】

输入第一行包含两个整数和K。
第二行包含N个整数A1,A2,…AN

【输出格式】

输出一行包含一个整数表示答案。

【样例输入】

5 1
1 4 2 8 5

【样例输出】

4

【评测用例规模与约定】

对于20%的评测用例,1≤K≤N≤100;
对于30%的评测用例,1≤K≤N≤1000;
对于 50% 的评测用例,1 ≤ K ≤ N ≤ 10000;
对于所有评测用例,1 ≤ K ≤ N ≤ 10 5, 1 ≤ Ai≤ 106

试题 J: 最优清零方案

【问题描述】

给定一个长度为N的数列A1A2,…AN。现在小蓝想通过若干次操作将这个数列中每个数字清零。
每次操作小蓝可以选择以下两种之一:
1.选择一个大于0的整数,将它减去1;
2.选择连续K个大于0的整数,将它们各减去1。
小蓝最少经过几次操作可以将整个数列清零?

【输入格式】

输入第一行包含两个整数N和K。
第二行包含个整数A1,A2,…,AN

【输出格式】

输出一个整数表示答案。

【样例输入】

4 2
1 2 3 4

【样例输出】

6

【评测用例规模与约定】

对于20%的评测用例,1≤K≤N≤10。
对于40%的评测用例,1≤K≤N≤100。
对于50%的评测用例,1≤K≤N≤1000。
对于60%的评测用例,1≤K≤N≤10000。
对于70%的评测用例,1≤K≤N≤100000。
对于所有评测用例,1≤K≤N≤1000000,0≤Ai≤1000000。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青岛少儿编程-王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值