ac代码(注意用long long):
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <set>
#define ll long long
using namespace std;
const ll mod=1e9+7;
struct node{
ll a[2][2];
void init(){
a[0][0]=1;
a[0][1]=-1;
a[1][0]=1;
a[1][1]=0;
}
};
node matrixmul(node a,node b){
int i,j,k;
node c;
c.a[0][0]=c.a[0][1]=c.a[1][0]=c.a[1][1]=0;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
for(k=0;k<2;k++){
c.a[i][j]+=(a.a[i][k]*b.a[k][j]);
}
c.a[i][j]%=mod;
}
}
return c;
}
node mul(node s,ll k){
node ans;
//ans.init();
ans.a[0][0]=ans.a[1][1]=1;
ans.a[0][1]=ans.a[1][0]=0;
while(k>=1){
if(k&1)
ans=matrixmul(ans,s);
k>>=1;
s=matrixmul(s,s);
}
return ans;
}
int main()
{
ll x,y,n;
while(~scanf("%lld%lld",&x,&y)){
scanf("%d",&n);
if(n==1){
printf("%lld\n",(x%mod + mod)%mod);
}
else if(n==2){
printf("%lld\n",(y%mod + mod)%mod);
}
else{
node s;
s.init();
s=mul(s, );
printf("%lld\n",(( s.a[0][0]*y+s.a[0][1]*(x) ) % mod+mod) % mod);
}
}
return 0;
}