Python 2.7 在hackerrank的测试用例2和3中获取超时错误和运行时错误。如何解决这个问题?
此代码的目标是打印给定范围内3和5的倍数之和。在hackerrank中,我在测试用例2和3中遇到了错误。有人知道如何解决这个问题吗Python 2.7 在hackerrank的测试用例2和3中获取超时错误和运行时错误。如何解决这个问题?,python-2.7,Python 2.7,此代码的目标是打印给定范围内3和5的倍数之和。在hackerrank中,我在测试用例2和3中遇到了错误。有人知道如何解决这个问题吗 t =int(raw_input()) for i in range(0,t): range = int(raw_input()) a=3 b=5 aa=[] res=[] def forA(a): #Calculating Multiple of 3 while True: if a >=range :
t =int(raw_input())
for i in range(0,t):
range = int(raw_input())
a=3
b=5
aa=[]
res=[]
def forA(a): #Calculating Multiple of 3
while True:
if a >=range :
a = a-3
break
else:
aa.append(a)
a += 3;
def forB(b): #Calculating Multiple of 5
while True:
if b >=range :
b=b-5
return b
break
else:
aa.append(b)
b += 5;
forA(a)
forB(b)
for i in aa: #eliminate duplicate values of multiples.
if i not in res:
res.append(i)
print sum(res)
这可能会解决您的问题,因为它使用pythons内置的“智能”功能,而不是自己一次创建一个列表项。所以他们更快。。。这可能会解决您遇到的计时错误 从3或5到t,你可以得到输入的所有数字
from itertools import chain
t =15
threes = range(0,t+1,3) # range provides [lower..higher[ not including higher value
fives = range(0,t+1,5)
sums = sum(chain(threes,fives)) # without itertools: sums=sum(threes) + sum(fives)
print(threes)
print(fives)
print(sums)
如果要避免倍数,请避免链(…),使用集合并在求和之前将它们连接在一起
s = set(threes) | set(fives)
print(sum(s))
输出:
[0, 3, 6, 9, 12, 15] # threes up to 15
[0, 5, 10, 15] # fives up to 15
75 # sum of chained ones
60 # sum of set
要考虑一个想法,我必须创建和帐户/登录到Hakrink,找到这个难题,得到测试用例,并分析你做了什么。对不起,不麻烦了。也许你可以提供更多关于这些测试用例的信息,这样我们就可以不费吹灰之力地解决它了?暂停可能意味着你做某事的速度不够快。非常感谢你,帕特里克。代码运行良好。很抱歉,我没有提供任何测试用例。问题在于时机。您的代码运行得更快,并且通过了所有测试用例。非常感谢。