第1关:鸡兔同笼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"""
在同一行内输入用空格分隔的两个整数,代表头和脚的数量,计算并输出笼中各有多少只鸡和兔,
如无解则输出“Data Error!”,函数无返回值。
输入:35 94
输出:有23 只鸡,12 只兔
输入:100 5
输出:Data Error!
"""
head,feet = map(int, input().split()) #读入以空格分隔的两个整数,表示头和脚的数量
# 计算鸡和兔的数量
x = (4 * head - feet) / 2
y = head - x

if x >= 0 and y >= 0 and x.is_integer() and y.is_integer():
print(f"有{int(x)}只鸡,{int(y)}只兔")
else:
print("Data Error!")

第2关:物不知数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"""一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;
7个7个数也会多出2个。输入一个正整数,从小到大依次输出所有不超过输入数字
且满足条件的物品数量,有多个答案时每行输出一个。
例如输入:200
输出:
23
128
"""
n = int(input())
valid_counts = []

for i in range(1, n + 1):
if i % 3 == 2 and i % 5 == 3 and i % 7 == 2:
valid_counts.append(i)

if len(valid_counts) == 0:
print("No solution!")
else:
for count in valid_counts:
print(count)

第3关:二鼠打洞

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打洞一尺,小老鼠也是打洞一尺。
大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。计算并输出它们几天可以相逢,
相逢时各打了多少尺。
输入格式:输入1 个整数,代表墙的厚度,单位为尺
输出格式:
第一行输出1 个整数,表示相遇时所需的天数
第二行输出2 个浮点数,分别为小鼠和大鼠打洞的距离,单位为尺,保留小数点后1 位数字。
"""
wall = int(input()) #墙壁的厚度
rat, mouse, day, time = 1, 1, 0, 1 #大鼠速度、小鼠速度、天数、当天工作时长(1表示工作一整天)
distance_of_rat, distance_of_mouse = 0, 0 #大鼠路程、小鼠的路程
while wall > 0:
wall = wall - rat - mouse

if wall <= 0:
wall = wall + rat + mouse
x = wall / (rat + mouse)
distance_of_rat += rat * x
distance_of_mouse += mouse * x
wall = wall - rat - mouse
day += 1

else:
distance_of_rat += rat
distance_of_mouse += mouse
day += 1
rat = 2 * rat
mouse = 1 / 2 * mouse

print(day)
print(round(distance_of_mouse, 1), round(distance_of_rat, 1)) #使用round函数来保留小数点后一位

第4关:宝塔上的琉璃灯

1
2
3
4
5
6
7
8
9
10
11
12
"""有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,
已知共有765 盏琉璃灯,计算并输出每层各有多少盏琉璃灯。
输出为8行,每行都是一个正整数,从上往下数字依次增大,每个数字代表本层宝塔上的琉璃灯数目。
"""
from itertools import count

for first in count(1, 1):
floors = [first * (2**i) for i in range(8)]
if sum(floors) == 765:
for index, value in enumerate(floors, start=1):
print(value)
break

第5关:李白买酒

1
2
3
4
5
6
7
8
9
10
11
12
"""大诗人李白,提着酒壶,从家里出来,酒壶中有酒若干。他边走边唱:无事街上走,提壶去买酒,
遇店加一倍,见花喝一斗,五遇店和花,喝光壶中酒,计算并输出壶中原有酒几斗?
"""
#解题思路:让李白按路线逆向走一遍
wine =0 #最后酒壶空了
for i in range(5):
#遇到鲜花
wine = wine +1
#遇到酒店
wine = wine / 2

print(wine) #原来有多少斗酒