[アルゴリズム/標準]9009号:フィボナッチ(python)
フィボナッチを予め取得してリストに保存し、最大のフィボナッチからインポートし、比較して元の値から減算する形で実現します.
関数で実現します
def sol(n, fibo):
answer = []
if n == 0:
return answer.append(0)
for k in sorted(fibo, reverse=True):
if k <= n:
answer.append(k)
n -= k
return answer[::-1]
def get_fibo():
fibo = [1, 2]
while fibo[-1] <= 1000000000:
fibo.append(fibo[-2] + fibo[-1])
return fibo
if __name__ == '__main__':
T = int(input())
f = get_fibo()
for i in range(T):
result = sol(int(input()), f)
print(*result)
Reference
この問題について([アルゴリズム/標準]9009号:フィボナッチ(python)), 我々は、より多くの情報をここで見つけました https://velog.io/@y7y1h13/알고리즘백준-9009번-피보나치-pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol