第1关:欧几里得算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
##输入M和N

M = int(input())
N = int(input())


###请继续你的代码:
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)


if gcd(M, N) == 1:
print(f"{M}{N}互质。")
else:
print(f"{M}{N}的最大公约数为{gcd(M,N)}。")

第2关:斐波那契数列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def fab(n):
#####请在此处填写代码
if n <= 2:
return 1
else:
return fab(n - 1) + fab(n - 2)


if(__name__=="__main__"):
global result
n_str = input('请输入需要计算fabonacci数列的第几个元素:')
n = int(n_str)
result=fab(n)
print(result)

第3关:汉诺塔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def Hanoi(n, A, C, B):
##汉诺塔递归函数主体
##从任务指导参考代码中抄写
global count
if n < 1:
print("invalid input")
elif n == 1:
print("%d:\t%s ---> %s" % (count, A, C))
count += 1
else:
Hanoi(n - 1, A, B, C)
Hanoi(1, A, C, B)
Hanoi(n - 1, B, C, A)


if __name__ == "__main__":
##自己写
n = int(input("请输入A柱子上的圆盘个数:"))
count = 1
A = "A"
B = "B"
C = "C"
Hanoi(n, A, C, B)

第4关:合并有序列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## Merge两个升序列表
def merge(L1, L2):
L1 = list(map(int, L1))
L2 = list(map(int, L2))
merged = L1 + L2
merged.sort(reverse=True)
print(merged)
# 请完成merge函数主体


if __name__ == "__main__":
X = input("请输入列表X:").split(",")
Y = input("请输入列表Y:").split(",")
merge(X, Y)
##请完成主函数实现X与Y的合并