首页 > 编程语言 >算法专项—第十五届蓝桥杯程序设计题解

算法专项—第十五届蓝桥杯程序设计题解

时间:2024-09-03 18:48:17浏览次数:9  
标签:输出 题解 number 整数 蓝桥 result input 移动 第十五届

前三道属于签到题目;后面才是有难度的!

一、读书

一本书共 n页,小明计划第一天看x页,此后每一天都要比前一天多看y页,请问小明几天可以看完这本书?
输入格式
一行输入三个整数n,x,y(20≤n≤5000),(1≤x,y≤20),分别表示书的总页数、计划第一天看的页数以及此后每天都要比前一天多看的页数,整数之间以一个空格隔开输出格式
输出一个整数,表示小明几天可以看完这本书样例输入
100 10 5样例输出
5

思路:定义一个sums值;当sums的值大于n的时候;说明数已经读完了;使用while循环进行处理即可

n,x,y=map(int,input().split())
days=1
sums=x
while sums<n:
    x=x+y
    sums+=x
    days+=1
print(days)

二、数字交换

前导 0:整数前对数值无影响的 0。
例如:

0201 去除前导 0后为 201;

00321 去除前导 0后为321

给定一个正整数 n,请将 n的最高位与最低位的数字进行交换,并输出交换后的结果。如果交换后的结果有前导0,去除前导0后再输出结果。
例 1:n=173,将 173 的最高位1与最低位3 交换,交换后的结果为371;
例 2:n=10200,将 10200 的最高位1与最低位0交换,交换后的结果为 00201,结果有前导0,去除前导0后的结果为201

#巧妙利用拼接的技巧一号机lstrip的方法
number=input()
data1,data2=number[-1],number[0]#取最后一位数字
number=number[-1]+number[1:-1]+number[0]
#print(number)
result=number.lstrip('0')
print(result)
#不使用lstrip方法;使用切片
def func(number):
    number1, number2 = number[0], number[-1]
    result = number2 + number[1:-1] + number1
    flag = 0
    for i in result:
        if i != '0':
            break
        flag += 1
    result = result[flag:]#使用切片去除开头的0
    return result

number = input()
print(func(number))

三、出现奇数次的数

题目描述

  • 奇数:指不能被 2 整除的整数。
  • 例如:3、5 是奇数;4、6不是奇数。
  • 给定 n个整数,其中只有一个数出现了奇数次,请找出这个数。
  • 例如:7 个整数为 6、2、4、6、4、2、6,其中只有6 出现了奇数次故输出6

输入格式

第一行输入一个整数 n(1<=n<10^5)

第二行输入 n个整数(1≤整数≤10^9)整数之间以一个空格隔开数据保证只有一个数出现了奇数次)

输出格式
输出一个整数,表示出现了奇数次的数

**样例输入

**7
6 2 4 6 4 2 6

样例输出
6

思路:就是巧用异或的思路;说简单也简单;要是想不到这一点就很难了;需要双重的循环遍历判断;这个代码就类似与

0^6 ^ 2 ^ 4 ^ 6 ^4 ^2 ^ 6 最终结果是出现奇数次数的数值;因为0^任何数都为该数值的本身;相同的数为0

def func(n,numbers):
    result=0
    for number in numbers:
        result^=number
    return result
n=int(input())
numbers=list(map(int,input().split()))
print(func(n,numbers))

四、字母移位

题目描述

  • 字母移位:表示将字母按照字母表的顺序进行移动。

  • 例如:'b’向右移动一位是’c’,“f’向左移动两位是’d’。

  • 特别地,'a’向左移动一位是’z’,“z’向右移动一位是’a’。

  • 给定一个仅包含小写字母且长度为 n 的字符串 s,以及 n 个正整数 a1,a2, a.…an,接下来对字符串s按如下规律操作:

              1. 将第 1位字符向左移动 a1 位;

              2. 再将第 1、2 位字符都向右移动 a2位;

              3. 再将第 1、2、3 位字符都向左移动 a3位;

              4. 再将第 1、2、3、4 位字符都向右移动 an位;

  • 以此类推,直到将s的第1到第n位字符都(按规律向左或向右)移动a,位。

  • 最后,将操作完成后的字符串s输出。

  • 例如:n=5,字符串s="abcde",5个正整数为1,3,5,7,9;

            1. 将"abcde"的第 1 位字符"a"向左移动 1位,s变为"zbcde"
            2. 再将"zbcde"的前 2 位字符"zb"向右移动 3 位,s变为"cecde"
            3. 再将"cecde”的前 3位字符"cec"向左移动5 位,s 变为"xzxde"
            4. 再将"xzxde"的前 4 位字符"xzxd"向右移动7 位,s变为"egeke"
            5. 再将"egeke"的前 5 位字符"egeke"向左移动 9 位,s 变为"vxvbv"。
            6. 最后,将操作完成后的字符串"vxvbv"输出。

输入格式

第一行输入一个整数n(1<=n<=10^5)
第二行输入一个仅包含小写字母且长度为 n的字符串s
第三行输入 n个整数 a1、a2...an(1<=a<=10^9),整数之间以一个空格隔开

输出格式:

输出一个字符串,表示操作完成后的字符串S

输入样例:

5
abcde
1 3 5 7 9

输出样例:

vxvbv

n = int(input())
strs = input()
numbers = int(input())
def shift_char(c, shift):
    base = ord('a')
    return chr((ord(c) - base + shift) % 26 + base)

def apply_shifts(n, s, a):
    s = list(s)
    for i in range(n):
        shift = a[i]
        for j in range(i + 1):
            if (i + 1) % 2 == 0:  # 偶数次操作,向右移位
                s[j] = shift_char(s[j], shift)
            else:  # 奇数次操作,向左移位
                s[j] = shift_char(s[j], -shift)
    return ''.join(s)

# 读取输入
n = int(input())
s = input().strip()
a = list(map(int, input().split()))

# 输出结果
print(apply_shifts(n, s, a))

标签:输出,题解,number,整数,蓝桥,result,input,移动,第十五届
From: https://www.cnblogs.com/gsupl/p/18395048

相关文章

  • 『主席树』疯狂的颜色序列 题解
    又又又好久没写题解了青花-周传雄三月走过柳絮散落恋人们匆匆我的爱情闻风不动翻阅昨日仍有温度蒙尘的心事恍恍惚惚已经隔世遗憾无法说惊觉心一缩紧紧握着青花信物信守着承诺离别总在失意中度过记忆油膏反复涂抹无法愈合的伤口你的回头划伤了沉默那夜重......
  • SP1843 LEONARDO - Leonardo Notebook 题解
    题目传送锚点博客园食用更佳前置知识1前置知识2首先是判断有无解。先疯狂寻找完所有的环,然后判断是否是偶环,最后如果都是偶环,且偶环的路径数成双成对地出现,或全是奇环,就输出Yes,不然就直接pass掉,输出No。然后我们发现:这里竟然出现了置换群!!!为什么它是置换群呢?我们从群的定......
  • P10878 [JRKSJ R9] 在相思树下 III 题解
    Description给定一个长为\(n\)的序列\(a_{1\dotsn}\),需要对它进行两种操作共\(n-1\)次。对一个长度为\(l\)的序列\(b_{1\dotsl}\)进行一次操作将会把序列变为一个长为\(l-1\)的序列\(c_{1\dotsl-1}\):操作一中,\(\foralli\in[1,l),c_i=\max(b_i,b_{i+1})\);操作......
  • Capital许可管理常见问题解答
    在软件资产管理过程中,企业经常会遇到各种关于许可管理的问题。这些问题不仅影响软件的合规使用,还可能导致不必要的法律风险和成本浪费。作为专业的软件许可管理解决方案提供商,Capital致力于帮助企业轻松应对这些挑战。以下是Capital许可管理中常见的问题及其解答,助您更好地理解和......
  • 【树莓派开发】树莓派GeanyIDE和控制台下C/C++中文乱码问题解决方法
    文章目录情况说明1.设置VS,将文件保存为UTF8编码2.更改GeanyIDE编码设置3.更改树莓派系统设置情况说明之前使用树莓派的时候,遇到了中文乱码的问题。VS2019编译器下写的.c文件,里面的中文注释在树莓派ide上乱码树莓派控制台上,C语言代码输出中文时乱码这里需要调整三个设置来解决该......
  • BUUCTF Reverse题解:第二部分(持续更新)
    Welcomeagain,toC12AK'sRejournal!目录题目传送门前言1.[GWCTF2019]pyre题目传送门前言就是不想上课……Re比上课有意思多了qwq1.[GWCTF2019]pyre下载的文件是.pyc格式,它是.py经编译后的字节码文件,可以使用在线工具进行反编译。我们把文件放入,得到如下代码......
  • BUUCTF Reverse题解:第一部分(已完结)
    WelcometoC12AK'sRejournal!目录题目传送门前言1.easyre2.reverse13.reverse24.内涵的软件5.新年快乐6.xor7.reverse38.helloworld9.不一样的flag10.SimpleRev11.luck_guy12.Java逆向解密13.JustRE14.刮开有奖15.简单注册器结语题目传送门前言现在是......
  • CF2008场题解
    Sakurako'sExam算法:模拟,分类讨论。题意简述:给\(a\)个数字\(1\)和\(b\)个数字\(2\),问能否在每个数字前加上加减号使得原始值为\(0\)。考虑\(1\)的个数如果是奇数,那么一定不行。否则如果\(2\)的个数是偶数,一定可以。当\(2\)的个数为奇数且还可能可以时,判断是否存......
  • ABC369F F - Gather Coins 题解
    题目链接:https://atcoder.jp/contests/abc369/tasks/abc369_f题目大意:在一个\(H\timesW\)的二维迷宫中有\(N\)枚硬币,其中第\(i\)枚硬币在\((R_i,C_i)\)(本题中,我们用\((r,c)\)表示二维迷宫中从上到下第\(r\)行从左到右第\(c\)列的那个格子)。你一开始在迷宫的左......
  • 如何解决《罗马2全面战争》中的twitchsdk_32_release.dll错误模块跳出问题?实用技巧与
    当您启动《罗马2全面战争》时,可能会遇到与twitchsdk_32_release.dll相关的错误提示,这可能导致游戏无法正常运行。本篇文章将深入探讨这一问题的原因以及提供多种解决方法,帮助您顺利启动游戏。twitchsdk_32_release.dll错误模块跳出的原因twitchsdk_32_release.dll文件出现......