CF 450B Jzzhu and Sequences

来源:互联网 发布:java 数组去重的方法 编辑:程序博客网 时间:2024/06/05 04:19

数学问题。

看到题目第一反应是菲波那切数列,然而看到2*10^9的数据范围。。吓得不敢讲话。。

直到我好好读了一遍题目。

f[i]=f[i-1]+f[i+1]  移项,得到 f[i+1]=f[i]-f[i-1]

就是 f[i]=f[i-1]-f[i-2]

然后把前面几个列出来:

f1;

f2;

f3=f2-f1;

f4=f3-f2=-f1;

f5=f4-f3=-f2;

f6=f5-f4=f1-f2;

f7=f6-f5=f1;

f8=f7-f6=f2;

到此为止,已经发现重复的了。。于是这一道题目瞬间转化成一道硕大无朋的水题。。


#include<iostream>using namespace std;const long int mod=1000000007;int n,x,y,f[7];void read(){int i,j;cin>>x>>y>>n;f[1]=x; f[2]=y; f[3]=f[2]-f[1];f[4]=f[3]-f[2];f[5]=f[4]-f[3];f[6]=f[5]-f[4];//构造数列n=(n-1)%6+1;while(f[n]<0)f[n]+=mod;//然而C++似乎没有对负数取模的能力。。cout<<(f[n]%mod)<<endl; return;}int main(){read();return 0;}


AC代码。

0 0
原创粉丝点击