【发布时间】:2015-01-10 03:29:39
【问题描述】:
问题是当输入非常大的数字时,如何有效地找到给定范围内的完美平方。我的解决方案是给出Time Limit Exceeded 错误。我已经检查了以下链接,但它们并没有解决我的问题:
- Python Program on Perfect Squares
- How could I check if a number is a perfect square?
- Fastest way to determine if an integer's square root is an integer(我不知道如何在 Python 中实现此链接中给出的解决方案)。
问题题是:
输入格式:第一行包含 T,测试用例的数量。接下来是 T 个测试用例,每个用例换行。每个测试用例包含两个用空格分隔的整数,分别表示 A 和 B。找出范围 A 和 B(均包含)内的所有完美正方形。
输入示例:
2 3 9 17 24我写的代码是:
import math
def is_perfect_square(n):
return n % n**0.5 == 0
t = int(raw_input())
for i in range(t):
numbers = map(int, raw_input().split())
count = 0
for j in xrange(numbers[0], numbers[1] + 1): # I also tried range() which gave memory error
if (is_perfect_square(j)):
count = count + 1
print count
虽然此代码适用于较小的数字,但它会为较大的输入提供 Time limit exceeded 错误。
(注意:gmpy 不是一个选项,因为代码必须在没有 gmpy 模块的在线编译器上运行)
【问题讨论】:
标签: python largenumber perfect-square