Pagini recente » Istoria paginii runda/ojisim/clasament | Cod sursa (job #1267684) | Cod sursa (job #977671) | Istoria paginii runda/winners32/clasament | Cod sursa (job #2136303)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("kfib.in");
ofstream g("kfib.out");
int a[2][2],b[2][2],c[2][2],d[2][2],k;
void matrice()
{
for(int i=1;i<(k-1)/2;i++)
{
c[0][0]=b[0][0]*a[0][0]+b[0][1]*a[1][0];
c[1][0]=b[1][0]*a[0][0]+b[1][1]*a[1][0];
c[0][1]=b[0][0]*a[0][1]+b[0][1]*a[1][1];
c[1][1]=b[1][0]*a[0][1]+b[1][1]*a[1][1];
b[0][0]=c[0][0];
b[1][0]=c[1][0];
b[0][1]=c[0][1];
b[1][1]=c[1][1];
}
c[0][0]=b[0][0]*b[0][0]+b[0][1]*b[1][0];
c[1][0]=b[1][0]*b[0][0]+b[1][1]*b[1][0];
c[0][1]=b[0][0]*b[0][1]+b[0][1]*b[1][1];
c[1][1]=b[1][0]*b[0][1]+b[1][1]*b[1][1];
if((k-1)%2!=0)
{ d[0][0]=c[0][0]*a[0][0]+c[0][1]*a[1][0];
d[1][0]=c[1][0]*a[0][0]+c[1][1]*a[1][0];
d[0][1]=c[0][0]*a[0][1]+c[0][1]*a[1][1];
d[1][1]=c[1][0]*a[0][1]+c[1][1]*a[1][1];
}
}
int main()
{ f>>k;
a[0][0]=0;
a[0][1]=1;
a[1][0]=1;
a[1][1]=1;
b[0][0]=0;
b[0][1]=1;
b[1][0]=1;
b[1][1]=1;
matrice();
if((k-1)%2==0)g<<c[1][1]%666013;
else g<<d[1][1]%666013;
return 0;
}