Pagini recente » Monitorul de evaluare | Cod sursa (job #994595) | Cod sursa (job #2439488) | Cod sursa (job #593106) | Cod sursa (job #2053834)
# include <fstream>
# define MOD 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
int v[3][3],a[3][3],n,pas;
void inmultire(int a[3][3],int b[3][3],int c[3][3]){
int d[3][3];
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++){
long long x=0;
for(int k=1;k<=2;k++)
x+=1LL*b[i][k]*c[k][j];
d[i][j]=x%MOD;
}
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
a[i][j]=d[i][j];
}
int main () {
fin>>n;
n-=2;
v[1][1]=v[1][2]=v[2][1]=1;
a[1][1]=a[2][2]=1;
for(pas=1;n;pas*=2){
if((n&pas)){
inmultire(a,a,v);
n-=pas;
}
inmultire(v,v,v);
}
fout<<(a[1][1]+a[1][2])%MOD;
return 0;
}