码迷,mamicode.com
首页 > 其他好文 > 详细

题解 CF450B 【Jzzhu and Sequences】

时间:2018-12-19 22:06:03      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:nbsp   int   tle   等于   UNC   names   ber   sequence   param   

作为首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】

标签:nbsp   int   tle   等于   UNC   names   ber   sequence   param   

原文地址:https://www.cnblogs.com/ThinkofBlank/p/10146157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!