前三道属于签到题目;后面才是有难度的!
一、读书
一本书共 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位字符向左移动 a1 位;
-
再将第 1、2 位字符都向右移动 a2位;
-
再将第 1、2、3 位字符都向左移动 a3位;
-
再将第 1、2、3、4 位字符都向右移动 an位;
-
-
-
-
-
-
-
以此类推,直到将s的第1到第n位字符都(按规律向左或向右)移动a,位。
-
最后,将操作完成后的字符串s输出。
-
例如:n=5,字符串s="abcde",5个正整数为1,3,5,7,9;
-
-
-
-
-
- 将"abcde"的第 1 位字符"a"向左移动 1位,s变为"zbcde"
- 再将"zbcde"的前 2 位字符"zb"向右移动 3 位,s变为"cecde"
- 再将"cecde”的前 3位字符"cec"向左移动5 位,s 变为"xzxde"
- 再将"xzxde"的前 4 位字符"xzxd"向右移动7 位,s变为"egeke"
- 再将"egeke"的前 5 位字符"egeke"向左移动 9 位,s 变为"vxvbv"。
- 最后,将操作完成后的字符串"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