Pagini recente » Cod sursa (job #20022) | Cod sursa (job #1463212) | Cod sursa (job #1634919) | Cod sursa (job #1029107) | Cod sursa (job #1776260)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("kfib.in");
ofstream out("kfib.out");
int Z[2][2]={{0,1},{1,1}},M[2][2]={{0,1},{1,1}};
const int mod=666013;
void multiply (int a[][2], int b[][2])
{
int i,j,k,c[2][2];
for (i=0;i<2;++i)
for (j=0;j<2;++j)
{
c[i][j]=0;
for (k=0;k<2;++k)
c[i][j]+=(a[i][k]*b[k][j])%mod;
c[i][j]%=mod;
}
for (int i=0;i<2;i++)
for (int j=0;j<2;j++)
M[i][j]=c[i][j];
}
void put (int n)
{
if (n==1) return;
if (n%2==0) {multiply(M,M); put(n/2); return;}
else {multiply(M,Z); put(n-1); return;}
}
int main()
{
int k;
in>>k;
put(k-1);
out<<M[1][1];
return 0;
}