问题 A: 过滤多余的空格
一个句子中也许有很多个连续空格,过滤掉多余的空格,只留下一个空格。
st=map(str,input().split())
print(" ".join(str(i) for i in st))
问题 B: 单词反转
输入一个句子(一行),将句子中的每一个单词翻转后输出。
st=map(str,input().split())
print(" ".join(i[::-1] for i in st))
问题 C: 读入未知数目的string对象
我们读入未知数目的string对象,每次输出对应的string对象编号和内容格式见样例
ass=1
while True:
try:
ls=map(str,input().split())
for i in ls:
print(ass,i)
ass+=1
except:
break
问题 D: 连续出现的字符
给定一个字符串,在字符串中找到第一个连续出现至少k次的字符。
k=int(input())
s=str(input())
ls=list()
ll=list()
fl=0
for i in s:
if i in ls:
ll[ls.index(i)]+=1
else:
ls.append(i)
ll.append(1)
if k in ll:
print(i)
fl = 1
break
if fl==0:
print("No")
问题 F: 【蓝桥杯2022初赛】刷题统计
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。
他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。
请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
import math
a, b, n = map(int, input().split())
z=5*a+2*b
q=n//z
y =n-q*z
la = 0
if y== 0:
print(7 *q)
else:
for i in range(1, 8):
if i <= 5:
la = la + a
else:
la = la + b
if la >= y:
break
print(7 * q + i)
问题 G: Another country
卢卡为了救他身边病危的精灵,只好去远在第二大陆的精灵之国采取宝贵的药物。他来到这个国家时被这个新国家的日期表示方式搞晕了,他不知道月份和年份哪个在前哪个在后,但他得赶快拿到药物着急的他求助于你,请你告诉他叭给定一个长度为4的字符串
如果是YYMM形式 就输出YYMM;如果是MMYY形式 就输出MMYY
如果两者都可以 就输出AMBIGUOUS;如果两者都不行 就输出NA
s=str(input())
a=s[:2]
b=s[2:]
if (int(a)>12 or int(a)==0) and (int(b)>12 or int(b)==0):
print("NA")
elif (int(a)>12 or int(a)==0):
print("YYMM")
elif (int(b)>12 or int(b)==0):
print("MMYY")
else:
print("AMBIGUOUS")
问题 J: 餐馆指南
你决定写一本介绍好餐厅的书。你想介绍的餐厅有n家 : 餐厅1,餐厅2,...餐厅n,1 <= n <= 100.餐厅i在Si市,你对每一家餐厅都有一个得分pi,1 <= pi <= 100,没有两家餐馆得分相同。
您要按以下顺序介绍餐厅:餐厅按其城市名称的字典顺序从小到大排列。如果同一个城市有多家餐厅,则按得分降序排列。按照书中介绍的顺序打印餐厅的编号。
n=int(input())
ls=list()
for i in range(n):
a,b=map(str,input().split())
ls.append([i+1,a,int(b)])
ls.sort(key=lambda x:(x[1],-x[2]))
for i in range(n):
print(ls[i][0])
问题 K: 罪恶沼泽
不知道21级军训拉练时有没有体验过沼泽,至少它对于大二人来说还是很痛苦的……
沼泽长度为N米,现在所有人都站在起点(就是第0米处),每次都可以选择跨一小步(走一米),或者跨一大步(走两米)。
但是沼泽沼泽,最恶心的地方就是有些点是不能踩的,一脚下去,有来无回……
问有多少种方式能从起点到达终点(第N米处),并且中途不会踩到沼泽。
结果对109+7取模
n,m = map(int,input().split())
flags = [False]*(n+1)
for i in range(m):
point = int(input())
flags[point] = True
dp = [0]*(n+1)
dp[0] = 1
if flags[1]:
dp[1] = 0
else:
dp[1] = 1
for i in range(2,n+1):
if not flags[i]:
dp[i] = int((dp[i-1]+dp[i-2])%(1e9+7))
print(dp[n])
问题 L: 异或&加法
大家都知道,异或的性质就相当于不带进位的二进制加法。
那么我们再稍微拓展一下,如果加法与异或在十进制中所产生的结果相同的话,会怎样呢?
给一个二进制数n,需要你找出一对非负整数x、y,使得它们符合下面的两个性质。
- x+y<=n
- x+y==x⊕y
那么问题来了,对于一个给定的n,能够有多少对符合条件的(x,y)呢?
结果对109+7取模。
s = input()
mod = 1e9+7
ans = 0
cnt = 1
for i in s:
ans = int((ans*3)%mod)
if i == '1':
ans = int((ans + cnt) % mod)
cnt = int((cnt*2)%mod)
print(int((ans+cnt)%mod))