B - Nbonacci Sequence

2 secs 1024 MB
loop0919's icon loop0919

解説

題意通り f(x)f(x) を計算すると、 O(NX)O(NX) の計算量が必要となり、間に合いません。
そこで、F(x)=f(0)+f(1)++f(x) (F(x) = f(0) + f(1) + \cdots + f(x) \ ( 便宜上 f(0)=0f(0) = 0 とする ))累積和 を用いて、 f(x)=F(x)F(xN1)f(x) = F(x) - F(x-N-1) と計算し高速化することで、 O(N+X)O(N+X) で解くことができます。

想定解

Python