加速python中的代码

时间:2014-03-29 12:42:55

标签: python algorithm

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个新的并标记,
然后换了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

但是通过法官这太慢了。我怎样才能加快速度?还有其他任何算法吗?

1 个答案:

答案 0 :(得分:0)

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

循环的终止条件是错误的并且应该是当前值<因为我们不能得到新的物品,我们有lees而不是我们留下的M标记物品。