题意
$f(x)$为斐波那契数列,求$\large\left(\sum\limits_{i=1}^nf(i)\right) mod f(m) mod p$
$0<n,m,p<1e18$
题解
m 为偶数
- $\frac n m$为偶数,$f(n) mod f(m)=f(n\%m)$
- $\frac n m$为奇数,$f(n) mod f(m)=f(m-1)f(n\%m) mod f(m)$
m 为奇数
- $\frac n m$为偶数,$\frac n {2m}$为偶数,$f(n) mod f(m)=f(n\%m)$
- $\frac n m$为偶数,$\frac n {2m}$为奇数,$f(n) mod f(m)=f(m)-f(n\%m)$
- $\frac n m$为奇数,$\frac n {2m}$为偶数,$f(n) mod f(m)=f(m-1)f(n\%m) mod f(m)$
- $\frac n m$为奇数,$\frac n {2m}$为奇数,$f(n) mod f(m)=f(m)-f(m-1)f(n\%m) mod f(m)$
简化$f(m-1)f(n\%m) mod f(m)$
性质:若$n\ge1,r\ge2$,则$f(n)f(n+r-1)-f(n+1)f(n+r-2)=(-1)^{n+1}f(r-2)$
令$k=n\%m,k=n+1,m-1=n+r-2$,则$f(n)f(k-1)-f(m-1)f(k)=(-1)^kf(m-k)$
所以$f(m-1)f(k) mod f(m)=(-1)^{k+1}f(m-k) mod f(m)$
- 当$k$为奇时,$f(m-1)f(n\%m) mod f(m)=f(m-k)$
- 当$k$为偶时,$f(m-1)f(n\%m) mod f(m)=f(m)-f(m-k)$
代码
1 |
|