/*
一般碰到这样题基本上就是找规律了
可以开个10000个数组打个表看下规律
此题规律就是每6个循环:前面3个和后面3个正好是相反数
另外此题要注意当n正好是6的倍数要特判下还有一定先取模再想减不然会爆掉
*/
#include<iostream>
#include<cstdio>
#include<queue>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
const int Max=10000;
long long f[Max];
long long x[Max];
using namespace std;
/*void init(long long x,long long y)
{
long long i;
f[1]=x;
f[2]=y;
for(i=2;i<Max;i++)
{
f[i+1]=(f[i]-f[i-1])%1000000007;
}
for(i=1;i<=1000;i++)
{
if(i%20==0)
cout<<endl;
cout<<f[i]<<" ";
}
cout<<endl;
}*/
int main()
{
long long x,y;
long long i,j,n;
//while(1)
//{
cin>>x>>y;
//init(x,y);
f[1]=x%1000000007;
f[2]=y%1000000007;
f[3]=(f[2]-f[1])%1000000007;
//cout<<f[3]<<endl;
f[4]=-f[1];
f[5]=-f[2];
f[6]=-f[3];
cin>>n;
n%=6;
if(n==0)
{
//cout<<f[6]<<"asd"<<endl;
if(f[6]<0)
cout<<(f[6]+1000000007)<<endl;
else
cout<<f[6]<<endl;
}
else
{
if(f[n]<0)
cout<<(f[n]+1000000007)<<endl;
else
cout<<f[n]<<endl;
}
//}
return 0;
}
Codeforces Div. 2 #257-B. Jzzhu and Sequences
最新推荐文章于 2014-09-07 16:59:30 发布