考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC006-B - トリボナッチ数列 を解く(1)

ABC006-B - トリボナッチ数列

 

なんか "数学" って感じだなあ…漸化式?

数学全然わからないので困る

 

まあ式の通りに1から数字を埋めていけば答えが出そうだ

 

提出したコード

l=[0]*100000

# a1=0, a2=0, a3=1
l[0]=0
l[1]=0
l[2]=1

# 入力
n=int(input())

for i in range(3,n):
  l[i]=l[i-3]+l[i-2]+l[i-1]

# n番目の項を10007で割った余りを出力
print(l[n-1]%10007)
 
提出結果は… MLE!
メモリ上限を超えてしまった
 
試しに10007で割る前の数字を出力してみたら天文学的な数値になっていた
そんなのを大量にリストに詰めてたので MLE になってしまったようだ
 
なんとか MLE にならない方法を考える必要があるな…
どうしたものか