首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -处理来自STDIN的输入而不转换为整数(SPOJ INOUTEST)

Python -处理来自STDIN的输入而不转换为整数(SPOJ INOUTEST)
EN

Stack Overflow用户
提问于 2012-05-30 19:09:58
回答 1查看 2.9K关注 0票数 1

我在试着解决这个http://www.spoj.pl/problems/INOUTEST/问题。

输入:输入的第一行包含一个整数N (1≤N≤106),表示后面的行数。每一行都包含两个空格分隔的整数a和b (|a|,|b|≤40,000)。

输出:对于每一对a和b,写一行包含a×b的值的输出。我的代码是这样的,它运行到17.03秒:

代码语言:javascript
复制
import sys
import psyco
psyco.full()

def main():
    s = sys.stdin
    t = int(s.readline())
    for l in s:
        n, m = map(int, l.split())
        print n*m

if __name__ == '__main__':
    main()

然后我改变了

代码语言:javascript
复制
t = int(s.readline())

代码语言:javascript
复制
t = s.readline()

一直持续到16.62秒。这让我意识到,将字符串转换为整数的次数越少,代码运行的速度就越快。最快的解决方案大约是2.5秒。我对此很好奇,因为我用python解决了SPOJ中的所有问题,我正在努力学习。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-07-08 21:59:25

通过不在for循环中使用map,我设法将您的时间缩短了4秒(减少到12.52秒)。相反,我只是以我能想到的最直接的方式将每一行输入转换为两个整数。

代码语言:javascript
复制
ab = line.split()
a = int(ab[0])
b = int(ab[1])

您的解决方案与我提出的解决方案之间唯一的另一个区别是,我使用raw_input()而不是s.readline()来读取输入的初始行(要跟踪的测试用例的数量)。因为这只执行一次,所以我怀疑它对运行时有可衡量的影响。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10815091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档