文章目录
微生物增殖
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
假设有两种微生物 X 和 Y。
X 出生后每隔 3 分钟分裂一次(数目加倍),Y 出生后每隔 2 分钟分裂一次(数目加倍)。
一个新出生的 X,半分钟之后吃掉 1 个 Y,并且,从此开始,每隔 1 分钟吃 1 个 Y。
现在已知有新出生的 X=10, Y=90,求 60 分钟后Y的数目。
运行限制
最大运行时间:1s
最大运行内存: 128M
分析
- 通过画图,我们可以得知
每六格为1次循环
。 - 如果时间能够整除3,即X增殖:
X = X * 2
- 如果时间能够整除2,即X增殖:
Y = Y * 2
- 如果时间能够整除0.5且不是整数,即Y被吃掉:
Y -=X
- 本来如果用循环来做,模拟起来应该不难,但是python循环的步长好像不能为浮点数,所以这里我们就把
60个1分钟变成120个0.5分钟
。如果这样变化的话, 所有时间发生相应变化(即扩大) - 如果时间能够整除6,即X增殖:
X = X * 2
- 如果时间能够整除4,即X增殖:
Y = Y * 2
- 如果时间整除2且余1,即Y被吃掉:
Y -=X
运行代码
X = 10
Y = 90
for i in range(1,121):
if i % 2 == 1:
Y -= X
if i % 6 == 0:
X *= 2
if i % 4 == 0:
Y *= 2
print(Y)
通过截图
答案为94371840
保护环境
Y仅仅只差了1,就导致一个物种是否可以继续存活,说不定,有时我们破坏的就是使一个物种灭绝的最后一根稻草
古堡算式
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE * ? = EDCBA
他对华生说:“ABCDE 应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
运行限制
最大运行时间:1s
最大运行内存: 128M
分析
- 直接使用排列组合函数,由于是填空题,所以也可以不用去剪枝,直接用全排列5个数,然后再判断即可。
运行代码
from itertools import permutations
nums = [i for i in range(10)] # 0-9
for i in permutations(nums,5): # i是一个元组
ABCDE = "".join(str(j) for j in i)
EDCBA = ""
for j in range(4,-1,-1): # 反向遍历ABCDE
EDCBA+=ABCDE[j]
for z in range(1,10): # ?的遍历
if int(ABCDE) * z == int(EDCBA):
print(int(ABCDE))
通过截图
答案为21978
如有错误,敬请指正,欢迎交流,谢谢♪(・ω・)ノ