题目描述
电影院的每排有 N 个座位。座位分为普通座位(S)和爱心座位( L)。其中,
爱心座位总是两两出现
。每排座位的相邻的两个座位之间都设有一个杯架(除了两个爱心座位之间外)。特别地,一排座位的两侧也都设有杯架。如座位情况为:
SLLLLSSLL时,若用 * 来表示杯座,那么座位情况如下:
* S * L L * L L * S * S * L L * \texttt{* S * L L * L L * S * S * L L *} * S * L L * L L * S * S * L L *
现有 N 位顾客坐满这 N 个座位,求最多有多少人能够使用杯座。输入格式
第一行,一个整数 N(1 ≤ N ≤ 50)。
第二行,N 个字符 S/L,分别表示普通座位和爱心座位。
输出格式
输出能够使用杯座人数的最大值。
样例输入#1
3 SSS
样例输出#1
3
样例输入#2
4 SLLS
样例输出#2
4
样例输入#3
9 SLLLLSSLL
样例输出#3
7
n = int(input().strip())
seats = input().strip()
s = seats.count('S')
l = seats.count('LL')
result = s + l + 1
result = min(n, result)
print(result)
题目描述
给定 24 小时制下的时间 H:M,输出 24 小时制下比该时间早 45 分钟对应的时刻。
输入格式
第一行,两个正整数 H(0 ≤ H ≤ 23),M(0 ≤ M ≤ 59)。
输出格式
输出两个整数,表示早 45 分钟后的时刻。
样例输入#1
10 10
样例输出#1
9 25
样例输入#2
0 30
样例输出#2
23 45
样例输入#3
23 40
样例输出#3
22 55
H, M = map(int, input().strip().split())
# 将时间转成分钟
minutes = H * 60 + M
before = minutes - 45
before_h = before // 60
before_h = before_h
before_m = before - before_h * 60
print((before_h + 24) % 24, before_m)
题目描述
当两个整数碰撞时会发生什么?先将数位较少的数前不断添加前导 0 直到和数位较高的数的数位数量相同为止。然后,从两个数的最低位开始,每次将两个数的对应数位进行比较,并删去较小的那个数位(如果这两个数位相等则不执行任何操作),不断向高数位执行上述操作,直到最高位为止。此时,将这两个数中没有删去的数位按顺序依次拼接,可以得到两个新数。
例如,对于 456328 和 284315 这两个数,这两个的碰撞过程如下所示:
4 56 3 2 8 28 43 15不难看出,碰撞之后得到的两个新数为 46328 和 83。
现在给定两个数 n,m(1⩽n,m⩽109),请求出这两个数进行碰撞之后分别得到的新数。如果某个数在进行碰撞之后,其数位都已经被删空了,则在输出中输出一行字符串
YODA
。具体见『输出格式』部分。输入格式
第一行输入一个整数 n,表示要进行碰撞的第一个数。
第二行输入一个整数 m,表示要进行碰撞的第二个数。输出格式
输出共两行。
第一行中,如果 n 的数位已经删空,则输出一个字符串
YODA
,否则输出一个整数,表示 n 进行碰撞后得到的新数。
第二行中,如果 m 的数位已经删空,则输出一个字符串YODA
,否则输出一个整数,表示 m 进行碰撞后得到的新数。样例输入#1
300 500
样例输出#1
0 500
样例输入#2
65743 9651
样例输出#2
673 95
样例输入#3
2341 6785
样例输出#3
YODA 6785
n = input().strip()
m = input().strip()
# 取位数较多的长度
len_max = max(len(n), len(m))
# 将数位较少的数前不断添加前导0,直到和数位较高的数的数位数量相同为止
n = n.rjust(len_max, '0')
m = m.rjust(len_max, '0')
str_n = ""
str_m = ""
# 从两个数的最低位开始
for i in range(len_max-1, -1, -1):
# 将两个数的对应数位进行比较,并拼接较大的那个数位
if int(n[i]) > int(m[i]):
str_n += n[i]
# 如果这两个数位相等则直接拼接
if int(n[i]) == int(m[i]):
str_n += n[i]
str_m += m[i]
if int(n[i]) < int(m[i]):
str_m += m[i]
# 判断是否删空
if len(str_n) == 0:
print("YODA")
else:
print(int(str_n[::-1]))
if len(str_m) == 0:
print("YODA")
else:
print(int(str_m[::-1]))
题目描述
Kaučuk 程序只有下列三种命令:
- section:创建新的一级标题,序号从 1 开始标记。
- subsection:创建新的二级标题,序号在每个一级标题的基础上从 1 开始标记。
- subsubsection:创建新的三级标题,序号在每个二级标题的基础上从 1 开始标记。
给定 n 组命令及标题名称,输出所有标题序号及其名称。
输入格式
第一行一个正整数 n(n ≤ 100),表示命令的数量。
接下来的 n 行,每行输入命令名称(section、subsection、subsubsection 之一)和标题名称。标题名称由不超过20个小写英文字母组成。
输出格式
共 n 行,表示所有标题序号及其名称。
样例输入#1
3 section zivotinje section boje section voce
样例输出#1
1 zivotinje 2 boje 3 voce
样例输入#2
4 section zivotinje subsection macke subsection psi subsubsection mops
样例输出#2
1 zivotinje 1.1 macke 1.2 psi 1.2.1 mops
样例输入#3
4 section zivotinje subsection psi section voce subsection ananas
样例输出#3
1 zivotinje 1.1 psi 2 voce 2.1 ananas
n = int(input().strip())
section = 0
subsection = 0
subsubsection = 0
for i in range(n):
level, command = input().strip().split()
if level == 'section':
section += 1
subsection = 0
if level == 'subsection':
subsection += 1
subsubsection = 0
if level == 'subsubsection':
subsubsection += 1
title = str(section)
if subsection != 0:
title += '.' + str(subsection)
if subsubsection != 0:
title += '.' + str(subsubsection)
print(title, command)
题目描述
给定 A,I,求一个最小的 N,使得
⌈ N A ⌉ ≥ I \lceil\frac{N}{A}\rceil\geq I ⌈AN⌉≥I
输入格式一行两个整数 A,I(1 ≤ A,I ≤ 100)。
输出格式
一行一个整数 N。
样例输入#1
38 24
样例输出 #1
875
样例输入#2
1 100
样例输出#2
100
样例输入#3
10 10
样例输出 #3
91
import math
"""
向下取整的运算称为Floor,用数学符号⌊⌋表示;向上取整的运算称为Ceiling,用数学符号⌈⌉表示
"""
A, I = map(int, input().strip().split())
if 1 <= A <= 100 and 1 <= I <= 100:
if I == 1:
print(A)
else:
for k in range(A * (I-1), (A * I) + 1):
if math.ceil(k / A) >= I:
print(k)
break
题目描述
公交车上初始有n 个人,每停一站,车上会先下去一个人,然后再下去车上剩下的人数的一半的人。已知经过了 k 个站之后,车上没人了。现在,给出 k(1 ≤ k ≤ 30),求一开始车上的人数 n。
输入格式
第一行为测试数据个数 T.
随后的T行为k的值
输出格式
每一行为给定的k对应的车上的初始人数.
样例输入
2 1 3
样例输出
1 7
n = int(input().strip())
for i in range(n):
k = int(input().strip())
count = 1
while k > 1:
count = count * 2 + 1
k -= 1
print(count)
题目描述
给定 n 个正整数 a1 … an,请从中选择 3 个数字,满足他们的和不大于给定的整数 m,请求出这个和最大可能是多少。
输入格式
第一行有两个整数,分别表示数字个数 n (1≤n≤100)和给定的整数 m(6 ≤ m ≤ 3×105)。
第二行有 n 个整数,表示给定的 n 个数字 ai(1 ≤ ai ≤ 105)。
输出格式
输出一行一个整数表示答案。
样例输入#1
5 21 5 6 7 8 9
样例输出#1
21
样例输入#2
10 500 93 181 245 214 315 36 185 138 216 295
样例输出#2
497
n, m = map(int, input().strip().split())
nums = [int(i) for i in input().strip().split()]
sum = 0
for i in range(n-2):
for j in range(i+1, n-1):
for k in range(j+1, n):
temp = nums[i] + nums[j] + nums[k]
if m >= temp >= sum:
sum = temp
print(sum)
题目描述
老师给了 Perica 两个数 a, b,Perica 将他们抄在了笔记本上,并要算出他们的和。
在抄写过程中,Perica 可能会将 a, b 中的数字 6 错抄成数字 5,也可能将数字 5 错抄成数字 6,当然也可能不抄错。
给定 a, b,请求出 Perica 算出的和最小和最大分别是多少。
输入格式
输入只有一行两个整数,分别表示 a 和 b(1 ≤ a,b ≤ 106)。
输出格式
输出一行两个整数,表示最小可能的和以及最大可能的和。
样例输入#1
11 25
样例输出#1
36 37
样例输入#2
1430 4862
样例输出#2
6282 6292
样例输入#3
16796 58786
样例输出#3
74580 85582
a, b = map(str, input().strip().split())
min_a = a.replace('6', '5')
min_b = b.replace('6', '5')
max_a = a.replace('5', '6')
max_b = b.replace('5', '6')
min_num = int(min_a) + int(min_b)
max_num = int(max_a) + int(max_b)
print(min_num, max_num)
题目描述
在一个小村子里,邮递员、送奶工、垃圾清理工每天早晨都面临着同样的难题:18 号房子的门前有两条看门狗。他们所不知道的是,这两条狗的表现是有迹可循的。
当一天开始时,其中一条狗会先暴躁 a 分钟,然后安静 b 分钟,而另一条狗则会先暴躁 c 分钟,然后安静 d 分钟。这两条狗在一天中会无限地重复上述行为。
给定这三个人到达 18 号房子的时刻,请求出该时刻有几条狗是处于暴躁状态的。
输入格式
第一行有四个整数,分别表示 a, b, c, d,其意义见【题目描述】。
第二行有三个整数,分别表示邮递员到达的时刻 p,送奶工到达的时刻 m 和垃圾清理工到达的时刻 g。(1≤a,b,c,d,p,m,g<103)
输出格式
输出三行每行一个字符串,依次表示邮递员、送奶工、垃圾清理工到达时有几条狗处于暴躁状态。
- 如果没有狗处于暴躁状态,输出
none
。- 如果恰好有一条狗处于暴躁状态,输出
one
。- 如果两条狗都处于暴躁状态,输出
both
。样例输入#1
2 2 3 3 1 3 4
样例输出#1
both one none
样例输入#2
2 3 4 5 4 9 5
样例输出#2
one none none
count = 0
# 一条狗会先暴躁 a 分钟,然后安静 b 分钟
# 另一条狗则会先暴躁 c 分钟,然后安静 d 分钟
a, b, c, d = map(int, input().strip().split())
# 邮递员到达的时刻 p,送奶工到达的时刻 m 和垃圾清理工到达的时刻 g
p, m, g = map(int, input().strip().split())
num1 = p % (a + b)
num2 = p % (c + d)
num3 = m % (a + b)
num4 = m % (c + d)
num5 = g % (a + b)
num6 = g % (c + d)
"""
如果没有狗处于暴躁状态,输出 none。
如果恰好有一条狗处于暴躁状态,输出 one。
如果两条狗都处于暴躁状态,输出 both。
"""
if 1 <= num1 <= a and 1 <= num2 <= c:
print('both')
elif (1 <= num1 <= a and num2 > c) or (1 <= num2 <= c and num1 > a):
print('one')
else:
print('none')
if 1 <= num3 <= a and 1 <= num4 <= c:
print('both')
elif (1 <= num3 <= a and num4 > c) or (1 <= num4 <= c and num3 > a):
print('one')
else:
print('none')
if 1 <= num5 <= a and 1 <= num6 <= c:
print('both')
elif (1 <= num5 <= a and num6 > c) or (1 <= num6 <= c and num5 > a):
print('one')
else:
print('none')
题目描述
生活中我们会碰到一些特殊数字,这些数字使用一些特殊表达方式后会方便记忆和使用。比如说,109+7 就非常常见——它相比于 1000000007,更方便选手看清数字而不必数 0,而且没有科学计数法的精度损失。
你现在有一个形如 10k+x 的数字,请还原成一般写法。
输入格式
一行两个整数 k,x。(0≤x<1018,0≤k≤500。)
输出格式
一行一个整数表示 10k+x。
样例输入
9 7
样例输出
1000000007
k, x = map(str, input().strip().split())
# print(k)
# print(x)
# 转成字符串
n = f'1{"0" * int(k) }'
# print(n)
len_max = max(len(n), len(x))
# print(len_max)
# 统一位数
n = n.rjust(len_max, '0')
m = x.rjust(len_max, '0')
# print(n)
# print(m)
num = "0"
left = 0
# 从最低位开始逐位进行相加
for i in range(len_max-1, -1, -1):
left = int(n[i]) + int(m[i]) + int(num[-1])
num = num[:-1] + '{:02d}'.format(left)[::-1]
# 倒序输出
print(num.rstrip('0')[::-1])
题目描述
对于一套正确的棋子,应该包含:
- 一个国王;
- 一个皇后;
- 两个车;
- 两个象;
- 两个马;
- 八个兵。
现在给出这套残缺的棋子中每种棋子分别有多少个,请你求出需要如何添加或删除棋子来凑出完整的棋盘。
输入格式
输入一行六个数,依次表示国王,皇后,车,象,马,兵的数量。这些数字都在 0 ~ 10 之间(包含端点)。
输出格式
输出一行六个数,依次表示国王,皇后,车,象,马,兵需要添加或删除的数量。用正数来表示添加,用负数来表示删除。
样例输入#1
0 1 2 2 2 7
样例输出#1
1 0 0 0 0 1
样例输入#2
2 1 2 1 2 1
样例输出#2
-1 0 0 1 0 7
chess = [1, 1, 2, 2, 2, 8]
nums = [int(i) for i in input().strip().split()]
result = [chess[i]-nums[i] for i in range(6)]
# print(result)
print(' '.join(map(str, result)))
题目描述
一场巨大的派对结束以后,有五家报纸刊登了参加这场派对的人数,然而这些报纸上的数字可能是错误的。
现在你知道整个会场的面积是 L 平方米,并且平均每平方米上有 p 个人。现在请分别求出这五家报纸刊登的参加人数与实际参加人数之差。
输入格式
输入的第一行有两个整数,分别表示会场面积 L 和平均每平方米的人数 p(1≤ L,p ≤109)。
第二行有五个整数 a1 … a5,分别表示五家报纸刊登的人数(1≤*ai*≤1018)。
输出格式
输出一行五个整数,依次表示每家报纸刊登人数与实际人数之差。
样例输入#1
1 10 10 10 10 10 10
样例输出#1
0 0 0 0 0
样例输入#2
5 20 99 101 1000 0 97
样例输出#2
-1 1 900 -100 -3
L, p = map(int, input().strip().split())
total = L*p
person = [int(i) for i in input().strip().split()]
result = [person[i]-total for i in range(5)]
# print(result)
print(' '.join(map(str, result)))
题目描述
这里有一堆牌,可惜它们似乎不全。
您需要找出每种花色缺失的张数。
如果有相同的扑克牌,请输出
GRESKA
。输入格式
您要读取的是一个字符串 s,每三个字符为一张扑克牌。
对于每一张扑克牌:
- 第一位为花色,用
P
,K
,H
,T
表示,且输出也是这个顺序。- 接下来两位,为这张牌的点数,个位数会在十位补零。
(1≤∣s∣≤103 且 s 中仅含有数字与
P
,K
,H
,T
,每张牌的点数 ∈[1,13] )输出格式
如果有相同的扑克牌,请输出
GRESKA
。否则按
P
,K
,H
,T
的顺序,输出该花色缺的牌数。样例输入#1
P01K02H03H04
样例输出#1
12 12 11 13
样例输入#2
H02H10P11H02
样例输出#2
GRESKA
样例输入#3
P10K10H10T01
样例输出#3
12 12 12 12
colors = {'P': 0, 'K': 0, 'H': 0, 'T': 0}
cards = input().strip()
list_card = [cards[i:i+3] for i in range(0, len(cards), 3)]
# print(list_card)
same = False
for card in list_card:
if list_card.count(card) > 1:
same = True
break
if same:
print('GRESKA')
else:
for k in colors.keys():
colors[k] = cards.count(k)
result = [13-i for i in list(colors.values())]
# print(result)
print(' '.join(map(str, result)))
题目描述
给定三个整数 L,D,X(1≤L≤D≤104,1≤X≤36),你需要找到两个整数 N,M,使得:
- N 为满足条件的最小整数,L ≤ N ≤ D 且 N 的各位数字之和为 X;
- M 为满足条件的最大整数,L ≤ M ≤ D 且 M 的各位数字之和为 X。
保证 N,M 一定存在。
输入格式
输入共三行。
第一行一个整数 L,第二行一个整数 D,第三行一个整数 X。
输出格式
输出共两行。
第一行为一个整数 N,第二行为一个整数 M。
样例输入#1
1 100 4
样例输出#1
4 40
样例输入#2
100 500 12
样例输出#2
129 480
样例输入#3
1 10000 1
样例输出#3
1 10000
def cal_sum(num):
num = str(num)
sum = 0
for i in num:
sum += int(i)
return sum
L = int(input().strip())
D = int(input().strip())
X = int(input().strip())
if 1 <= L <= D <= 10000 and 1 <= X <= 36:
if cal_sum(L) == X and cal_sum(L) == cal_sum(D):
if L <= D:
print(L)
print(D)
else:
mark_N = D
mark_M = L
for N in range(L, D + 1):
if cal_sum(N) == X:
mark_N = N if N < mark_N else mark_N
mark_M = N if N > mark_M else mark_M
print(mark_N)
print(mark_M)
题目描述
单词是由大写或小写字母组成的字符串。特别的,末尾也可以是标点符号(
.
,?
,!
)。名字是 有且仅有首字母为大写字母 的单词。句子是由一些单词组成的字符串,并且最后一个字符是标点符号(
.
,?
,!
)
。给定 N 个句子,Mirko 想让你统计每个句子中分别有多少个名字。
输入格式
第一行包含一个正整数 N(1≤N≤5),表示句子的个数。
第二行包含这 N 个句子。这些句子的字符总数不会超过 103。
输出格式
包含 N 行,每行一个正整数。第 i 行表示第 i 个句子的名字总数。
样例输入#1
1 Spavas li Mirno del Potro Juan martine?
样例输出#1
4
样例输入#2
2 An4 voli Milovana. Ana nabra par Banana.
样例输出#2
1 2
def cal_name(line):
"""统计名字出现的个数,可重复出现"""
words = line.split(' ')
count = 0
for word in words:
# isalpha()函数:检测字符串是否只由字母组成
# istitle()函数:检测字符串首字母是否大写
if word.isalpha() and word.istitle():
count += 1
return count
n = int(input().strip())
lines = input().strip()
if 1 <= n <= 5:
chars = ['.', '?', '!']
for i in chars:
lines = lines.replace(i, '-')
lines = [line for line in lines.split('-') if line]
for line in lines:
print(cal_name(line))