Pagini recente » Rating Solomon Dragos (dra_solo) | Cod sursa (job #1940880) | Cod sursa (job #2472959) | Cod sursa (job #1486943) | Cod sursa (job #1743060)
#include <iostream>
#include <fstream>
using namespace std;
long long A[2][2]={{1,1},{0,0}},C[2][2]={{0,1},{1,1}},Sol[2][2]={{1,0},{0,1}},n;
void inmultire(long long a[][2],long long b[][2])
{
int c[2][2];
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
c[i][j]=0;
for(int k=0;k<2;k++)
{
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%666013;
}
}
}
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
a[i][j]=c[i][j];
}
}
}
void ridicare(int n)
{
while(n>0)
{
if(n%2==1)
{
n--;
inmultire(Sol,C);
}
else
{
n=n/2;
inmultire(C,C);
}
}
}
int main()
{
ifstream f("kfib.in");
ofstream g("kfib.out");
f>>n;
ridicare(n-1);
inmultire(A,Sol);
g<<A[0][0];
return 0;
}