HackerRankでProject Euler problem 25を試していました。実行時エラーにより1つのテストケースが失敗する
私はBinet's Formulaを使用してブルートフォース方式を試みました。
ここimport math
for _ in range(int(input())):
numLen = int(input())
for x in range(1, 5000):
fib = 1/pow(5,.5)*(pow(((1+pow(5,.5))/2),x) - pow(((1-pow(5,.5))/2),x))
if(numLen == len(str(int(fib)))):
print(x)
break
5000は、仮定の入力に基づいて、任意の数がそれ以上ではない、それは整数範囲(わからない)を超えているため、私は考えています、ランタイムエラーがあるとして、問題はここではないです。
また、他のテストケースも0.25秒未満で計算します。
検索しましたが、thisが見つかりました。
が、その再発法で:それは10秒を超えるよう
import math
for _ in range(int(input())):
a = 1
b = 0
n = int(input())
term = 1
while len(str(a)) != n:
a, b = a+b, a
term+=1
print (term)
はタイムアウトを提供します。
第1の方法を改善し、第2の方法を最適化する方法を見つけることができますか?
注:pow()の値を再計算する代わりに変数に格納しようとしましたが、あまり役に立ちませんでした。
ありがとうございます!しかし、再び私は時間がない問題を繰り返す、それはより効率的なスペースが必要です。 –