Py学习  »  Python

如何通过一个简单的循环获得非常快的python

totallymike • 6 年前 • 1784 次点击  

我正在研究 SPOJ 问题, INTEST . 目标是指定测试用例数(n)和除数(k),然后输入程序n个数字。程序将接受stdin新行中的每个数字,并且在接收到第n个数字后,将告诉您有多少数字可以被k整除。

这个问题的唯一挑战是让代码更快,因为 k 最多可以是10^7和 n 可高达10^9。

我试着用python编写它,但在加速时遇到了困难。有什么想法吗?


编辑2:我终于在10.54秒时通过了。我几乎用了你所有的答案,因此很难选择一个“正确的”,但我相信我选择的答案是最好的。谢谢大家。最终通过代码如下。

编辑:我在包含的代码中包含了一些建议的更新。


不允许使用扩展和第三方模块。该代码也由spoj judge机器运行,因此我没有更改解释程序的选择。

import sys
import psyco
psyco.full()

def main():
    from sys import stdin, stdout
    first_in = stdin.readline()
    thing = first_in.split()
    n = int(thing[0])
    k = int(thing[1])
    total = 0

    list = stdin.readlines()
    for item in list:
        if int(item) % k == 0:
            total += 1

    stdout.write(str(total) + "\n")

if __name__ == "__main__":
    main()
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30331
 
1784 次点击  
文章 [ 6 ]  |  最新文章 6 年前