配るDPで書くとこんな感じ。 option defint input n dim lucas[n] lucas[0]=2:lucas[1]=1 for i=0 to n-2 if i>0 then lucas[i+1]=(lucas[i+1]+lucas[i])mod 20123 if i<n-2 then lucas[i+2]=(lucas[i+2]+lucas[i])mod 20123 next i
貰うDPで書くと option defint input n dim lucas[n] lucas[0]=2:lucas[1]=1 for i=2 to n-1 lucas[i]=(lucas[i-1]+lucas[i-2])mod 20123 next i
メモ化再帰だと option defint input n dim lucas[n] lucas[0]=2:lucas[1]=1 def lucas(n) if lucas[n] then return lucas[n] lucas[n]=(lucas(n-1)+lucas(n-1))mod 20123 return lucas[n] end tmp=lucas(n)