time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
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).
Input
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
Output a single integer representing fn modulo 1000000007 (109 + 7).
Sample test(s)
input
2 3 3
output
1
input
0 -1 2
output
1000000006
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include<cmath>
using namespace std;
typedef long long int LL;
const int mod=1e9+7;
LL f1,f2,f;
int main()
{
LL x,y,i;
while(scanf("%lld%lld",&x,&y)!=EOF)
{
LL n;
scanf("%lld",&n);
f1=x;
f2=y;
n=n%6;
if(n==1)
{
cout<<(x+mod)%mod<<endl;
continue;
}
else if(n==2)
{
cout<<(y+mod)%mod<<endl;
continue;
}
if(n==0)
n=6;
for(i=2;i<n;i++)
{
f=(f2-f1+mod)%mod;
f1=f2;
f2=f;
}
printf("%lld\n",(f+mod)%mod);
}
return 0;
}
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include<cmath>
using namespace std;
typedef long long int LL;
const int mod=1e9+7;
LL f1,f2,f;
int main()
{
LL x,y,i;
while(scanf("%lld%lld",&x,&y)!=EOF)
{
LL n;
scanf("%lld",&n);
f1=x;
f2=y;
n=n%6;
if(n==1)
{
cout<<(x+mod)%mod<<endl;
continue;
}
else if(n==2)
{
cout<<(y+mod)%mod<<endl;
continue;
}
if(n==0)
n=6;
for(i=2;i<n;i++)
{
f=(f2-f1+mod)%mod;
f1=f2;
f2=f;
}
printf("%lld\n",(f+mod)%mod);
}
return 0;
}