注意取mod的细节
ACcode:
#include <bits/stdc++.h>
#define mod 1000000007
#define ll long long
using namespace std;
struct Matrix{
ll mat[2][2];
};
Matrix mul(Matrix a,Matrix b){
Matrix ret;
for(int i=0;i<2;++i)
for(int j=0;j<2;++j){
ret.mat[i][j]=0;
for(int k=0;k<2;++k)
ret.mat[i][j]=(ret.mat[i][j]+a.mat[i][k]*b.mat[k][j]%mod+mod)%mod;
}
return ret;
}
Matrix pow(Matrix a,ll n){
Matrix ret;
memset(ret.mat,0,sizeof(ret.mat));
for(int i=0;i<2;++i)ret.mat[i][i]=1;
Matrix tmp=a;
while(n){
if(n&1)ret=mul(ret,tmp);
tmp=mul(tmp,tmp);
n>>=1;
}
return ret;
}
int main(){
ll a,b,c;
while(cin>>a>>b){
cin>>c;
if(c==1){
cout<<(a%mod+mod)%mod<<'\12';
continue;
}
if(c==2){
cout<<(b%mod+mod)%mod<<'\12';
continue;
}
Matrix d;
d.mat[0][0]=1;
d.mat[0][1]=-1;
d.mat[1][0]=1;
d.mat[1][1]=0;
d=pow(d,c-2);
ll ans=d.mat[0][0]*b%mod+d.mat[0][1]*a%mod;
ans=(ans%mod+mod)%mod;
cout<<ans<<'\12';
}
return 0;
}