题目
S ( n ) S(n) S(n)表示 F i b o n a c c i Fibonacci Fibonacci前 n n n项和 m o d mod mod m m m的值,即 S ( n ) = ( f 1 + f 2 + . . . . . + f n ) m o d S(n)=(f_1+f_2+.....+f_n)mod S(n)=(f1+f2+.....+fn)mod m m m。其中 f 1 = 1 , f 2 = 1 , f 3 = 2 , . . . . . . , f i = f i − 1 + f i − 2 f_1=1,f_2=1,f_3=2,......,f_i=f_{i-1}+f_{i-2} f1=1,f2=1,f3=2,......,fi=fi−1+fi−2
已知 T ( n ) = ( f 1 + 2 f 2 + 3 f 3 + . . . . . + n f n ) T(n)=(f_1+2 f_2+3 f_3+.....+n f_n) T(n)=(f1+2f2+3f3+.....+nfn) m o d mod mod m m m,表示 F i b o n a c c i Fibonacci Fibonacci数列的前 n n n项变形后的和 m o d mod mod m m m的值
现在告诉你 n n n和 m m m的值,请求出 T ( n ) T(n) T(n)的值。
数据范围:
对于 30 % 30 \% 30%的数据, 1 ≤ n ≤ 1000 1 \leq n \leq 1000 1≤n≤1000;
对于 60 % 60\% 60%的数据,$1 \leq n \leq 1000 $;
对于 100 % 100\% 100%的数据, 1 ≤ n , m ≤ 2 31 − 1 1\le n,m\le2^{31}-1 1≤n,m≤231−1.
分析
由于我们已经知道 f n f_n fn和 S n S_n Sn是如何求得的,我们可以尝试将 T n T_n Tn的表达式转换成 S n S_n Sn或者 f n f_n fn.
可以先来看一下:Fibonacci前n项和
So
T n = f 1 + 2 f 2 + 3 f 3 + . . . + n f n T_n=f_1+2f_2+3f_3+...+nf_n \\ Tn=f1+2f2+3f3+...+nf