Pagini recente » Cod sursa (job #450696) | Cod sursa (job #791274) | Cod sursa (job #1327606) | Cod sursa (job #1046118) | Cod sursa (job #2716185)
#include <iostream>
#include <fstream>
using namespace std;
long long f[2][2],a[2][2];
void produs(long long p[2][2],long long a[2][2],long long b[2][2])
{
int aux[2][2];
for (int i=0;i<2;i++)
{
for (int j=0;j<2;j++)
{
aux[i][j]=0;
for (int k=0;k<2;k++)
{
aux[i][j]+=a[i][k]*b[k][j];
aux[i][j]%=666013;
}
}
}
for (int i=0;i<2;i++)
{
for (int j=0;j<2;j++)
{
p[i][j]=aux[i][j];
}
}
}
int main()
{
ifstream in("kfib.in");
ofstream out("kfib.out");
long long K,n;
in>>K;
n=K;
a[0][0]=1; a[0][1]=1; a[1][0]=1; a[1][1]=0;
f[0][0]=1; f[0][1]=0; f[1][0]=0; f[1][1]=1;
while (K>0)
{
if(K%2!=0)
{
produs(f,f,a);
int f[2][2],a[2][2]; }
produs(a,a,a);
K=K/2;
}
if (n>2)
out<<f[1][0];
else
if (n==0)
out<<0;
else
out<<1;
in.close();
out.close();
return 0;
}