题目大意:现在给你一个表达式:fn=fn-1-fn-2,其中第一项和第二项是题目给出的,让你求出满足这个式子的第N项
思路:本来想着矩阵快速幂试一下,后来发现这个式子是前6项的循环,下面给出我求得时候的一个图吧,
基本上就是这么出来的吧。。。。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int mod=1000000007;
int a[7];
int main()
{
while(scanf("%d%d",&a[0],&a[1])!=EOF)
{
if(a[0]<0)
a[0]=(a[0]+mod)%mod;
else
a[0]%=mod;
if(a[1]<0)
a[1]=(a[1]+mod)%mod;
else
a[1]%=mod;
a[2]=(a[1]%mod-a[0]%mod)%mod;
if(a[2]<0)
a[2]=(a[2]+mod)%mod;
for(int i=3; i<6; i++)
{
if(a[i-3]>0)
a[i]=(-a[i-3]+mod)%mod;
else
a[i]=(-a[i-3])%mod;
}
int k;
scanf("%d",&k);
printf("%d\n",a[(k-1)%6]%mod);
}
}