我无法理解它从何而来,T
也M
无法分别理解循环的下限和上限:
今天早上,评审团决定在奥林匹克版本中添加另一个“非常简单的问题”。组委会执行秘书把条件打印了一份,现在他需要时间
N
在奥运会开始前多印几份。他有两台复印机可供使用,其中一台可以在
х
几秒钟内复印一张纸,另一台则可以在y
.允许使用一台复印机或同时使用两台复印机。您不仅可以从原件复制,还可以从副本复制。
帮助他算出这需要最少的时间。
输入数据
程序输入接收三个自然数
N
、x
和y
,并用空格 (1 ≤ N ≤ 2∙108, 1 ≤ x, y ≤ 10
) 分隔。印记
打印一份号码 – 接收
N
副本所需的最短时间(以秒为单位)。例子:
输入数据
4 1 1
印记
3
输入数据
5 1 2
印记
4
代码:
def min_time(N, x, y):
if x > y:
x, y = y, x
M = y * (N - 1) // (x + y)
T = x + max(x * M, y * (N - 1 - M))
for m in range(max(0, M - 1), min(N - 1, M) + 2):
t = x + max(x * m, y * (N - 1 - m))
if t < T:
T = t
return T
N, x, y = map(int, input().split())
print(min_time(N, x, y))
将脚本复制到 test.py 并运行: