如何优化一段代码以在2秒内执行

时间:2014-06-29 16:32:22

标签: python

对于编码练习的挑战,我写了这个python代码,但是给了6秒的执行时间,但我想让它在2秒内执行。我应该如何修改此代码?未来的提示也受到欢迎。

times = int(raw_input())

for i in range (times):
    count = 0
    z =  raw_input().split()
    a,d = int(z[0]),int(z[1])
    p= int(raw_input())
    while a%p != 0:
        a= a+d
        count = count+1
    print count

问题陈述简要说明:

输入格式:第一行包含一个数字tc,表示测试用例的数量。第二行包含两个整数,a和d - a描绘了AP中的第一项,d描述了常见的差异。最后一行包含素数。

输出格式:您必须打印给定AP中给定素数的倍数的FIRST索引(从0开始)。如果此无限AP中不存在此类元素,则打印-1。

约束:

0 <= a, d, <= 10^18
1 <= p <= 10^9

示例输入:

1
4 9
11

示例输出:

2

说明:AP将是:4,4 + 9 = 13,13 + 9 = 22,22 + 9 = 31 - 且素数为11,因此索引为[2]。

1 个答案:

答案 0 :(得分:1)

您忘了将p%a更改为a%p,这是最后一次指出的 你发布了这个问题。你也忘了澄清它需要六个 使用真实数据的秒数,而不是此测试数据。

问题在于您使用的是效率低下的强力算法。 试试extended Euclidean algorithm