P1150
Peter 的烟
题目描述
Peter 有 n 根烟,他每吸完一根烟就把烟蒂保存起来,k(k>1)个烟蒂可以换一个新的烟,那么 Peter 最终能吸到多少根烟呢?
与某些脑筋急转弯不同的是,Peter 并不能从异次元借到烟蒂,抽完后再还回去。
输入格式
每组测试数据一行包括两个整数 n,k(1<n,k≤108)。
输出格式
对于每组测试数据,输出一行包括一个整数表示最终烟的根数。
# 有n根烟,k(k>1)个烟蒂可以换一个新的烟
n, k = map(int, input().split())
# 初始化:total抽掉的烟根数=stubs烟蒂数=n(一次性抽完n根,拿n个烟蒂去兑换)
total = n
stubs = n
while stubs>=k:
# 有stubs个烟蒂,可以增加烟的数量add_cig
# //整除,结果向下取整
add_cig = stubs // k
total += add_cig
# 更新烟蒂数量
stubs = stubs % k + add_cig
# 输出最终烟的根数
print(total)
P1151
子数整数
题目描述
k = int(input())
num = 10000
has_solution = False
for num in range(10000,30001):
s = str(num)
sub1 = int(s[0:3])
sub2 = int(s[1:4])
sub3 = int(s[2:5])
if sub1 % k == 0 and sub2 % k == 0 and sub3 % k == 0:
print(num)
has_solution = True
if not has_solution:
print("No")
输入:15
输出结果:
22555
25555
28555
30000
P1152
欢乐的跳
题目描述
一个 n 个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了 [1,n−1] 之间的所有整数,则称之符合“欢乐的跳”,如数组 {1,4,2,3} 符合“欢乐的跳”,因为差的绝对值分别为:3,2,1。
给定一个数组,你的任务是判断该数组是否符合“欢乐的跳”。
输入格式
每组测试数据第一行以一个整数 n(1≤n≤1000) 开始,接下来 n 个空格隔开的在 [−108,108] 之间的整数。
输出格式
对于每组测试数据,输出一行若该数组符合“欢乐的跳”则输出 Jolly
,否则输出 Not jolly
。
# 读取输入并转换为整数列表
s = list(map(int, input().split()))
n = s[0] # 第一个元素是 n
# 生成正确的差值列表 [1, 2, ..., n-1]
correct = list(range(1, n))
# 计算相邻元素的差值
calculate = []
for i in range(1, n): # 从第二个元素开始
sub = abs(s[i] - s[i + 1]) # 计算相邻元素的绝对差
calculate.append(sub)
# 对差值列表进行排序
calculate.sort()
# 判断是否为 Jolly Jumper
if calculate == correct:
print("Jolly")
else:
print("Not jolly")