[英]Speed up code in python
N,M作为输入,最初给出N个项目,可以标记这些项目并交换为新的项目,这样,对于M个这些标记项目给出了1个新项目,问题是要找到可以容纳的最大项目数以这种方式被标记。 例如:
输入: 10 2
N = 10,M = 2
然后输出为: 10 + 5 + 2 + 1 + 1
因为
首先标记给定的10(N)个项目,然后将这10个项目全部换成5个新项目(N / M)并标记,
然后将其中4个交换(另存1个以备将来使用)换成2个新标记,
然后2换成1个新的,这个新的标记为
连同保存的1交换为新的1并标记。
Constraints:
1 <= N <= 1000
2 <= M <= 1000
这是我尝试的:
n,m = map(int,raw_input().split())
s = n
aux = 0
while n!=1:
aux = n%m
n /= m
s +=n
n +=aux
print s
但是,要通过法官实在太慢了。 我如何加快速度? 还有其他算法可以做到这一点吗?
n,m = map(int,raw_input().split())
s = n
aux = 0
while n>=m:
n, aux = divmod(n, m)
s +=n
n +=aux
print s
循环的终止条件是错误的,并且应为当前值<m,因为我们无法获得新的物品,因为我们拥有的酒糟比剩下的M个标记物品更糟。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.