题解 CF450B Jzzhu and Sequences
Posted thinkofblank
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解 CF450B Jzzhu and Sequences相关的知识,希望对你有一定的参考价值。
作为首A的人(?)我来发布下这道大水题的题解了~
首先题目给出了f[i]=f[i-1]+f[i+1],我们移下项: f[i+1]=f[i]-f[i-1],所以我们可以知道:第i项等于它前两项之差!
即: f[i]=f[i-1]-f[i-2],同时,f[i-1]=f[i-2]-f[i-3],代入得: f[i]=-f[i-3]=f[i-6],所以我们只需将前6项算出,第n%6项就是答案了,
不过值得注意的是,如果n%6==0,我们需要把他变成6,当然,也可以把第6项的值赋给第0项 至于取模,就不多说了。。。
代码如下:
#include<iostream>
using namespace std;
const long long mod=1e9+7;
long long f[7];//开long long 防爆
int main(){ long long n,lo;
cin>>f[1]>>f[2]>>n; f[3]=f[2]-f[1];
f[4]=-f[1]; f[5]=-f[2]; f[6]=-f[3];
n%=6;
if(n==0){//如果等于0,把它变成6或者令f[0]=f[6]
n=6; }
f[n]=(f[n]%mod+mod)%mod;//取模
cout<<f[n];
return 0;
}
当然,童鞋们也可以试试模3,不过记得讨论正负哦!
以上是关于题解 CF450B Jzzhu and Sequences的主要内容,如果未能解决你的问题,请参考以下文章
CodeForces 450B Jzzhu and Sequences
Codeforces 450B div.2 Jzzhu and Sequences 矩阵快速幂or规律
CF449D Jzzhu and Numbers (状压DP+容斥)