Codeforce 450B Jzzhu and Sequences 矩阵快速幂

Jzzhu has invented a kind of sequences, they meet the following property:

You are given x and y, please calculate fn modulo 1000000007 (109 + 7).


The first line contains two integers x and y (|x|, |y| ≤ 109). The second line contains a single integer n (1 ≤ n ≤ 2·109).


Output a single integer representing fn modulo 1000000007 (109 + 7).


Input

2 3
3

Output

1

Input

0 -1
2

Output

1000000006

 

 矩阵快速幂的模板题,对应的特征矩阵为【-1,0,-1,1】

#include
#include
#include
#include
#define maxn 10
using namespace std;
struct matrix
{
	int m[maxn][maxn];
};
matrix mul(matrix a,matrix b,int n)
{
	matrix temp;
	for(int i=0;i>1;
	}
	return ans;
}
int main()
{
	cin.tie(0);
	ios::sync_with_stdio(false);
	const long long a=1000000007;
	long long x,y,n=2,N;
	matrix res,ans;
	res.m[0][0]=0;
	res.m[0][1]=1;
	res.m[1][0]=-1;
	res.m[1][1]=1;

	cin>>x>>y>>N;
	ans=quickpow(res,n,N-1);
	long long num;
	num=((x*ans.m[0][0])+(y*ans.m[0][1]))%a;
	while(num<0)num=a+num;
	cout<

 

你可能感兴趣的:(数论)