Pagini recente » Cod sursa (job #2037447) | Cod sursa (job #1855863) | Cod sursa (job #831798) | Cod sursa (job #2328698) | Cod sursa (job #2828145)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
const int MOD = 666013;
int k;
int fibo[5][5];
int aux[5][5];
int matrix[5][5];
void inmultire(int ans[5][5], int aux[5][5])
{
for(int i = 1; i <= 2; i ++)
{
for(int j = 1; j <= 2; j ++)
{
int suma = 0;
for(int q = 1; q <= 2; q ++)
{
suma += ans[i][q] * aux[q][j];
suma %= MOD;
}
matrix[i][j] = suma;
}
}
for(int i = 1; i <= 2; i ++)
{
for(int j = 1; j <= 2; j ++)
{
ans[i][j] = matrix[i][j];
}
}
}
void lgput(int exp)
{
for(int i = 1; i <= exp; i *= 2)
{
if(i & exp)
{
inmultire(fibo, aux);
}
inmultire(aux, aux);
}
}
signed main()
{
fin >> k;
aux[1][1] = fibo[1][1] = 0;
aux[1][2] = fibo[1][2] = 1;
aux[2][1] = fibo[2][1] = 1;
aux[2][2] = fibo[2][2] = 1;
/// F0 = 0, F1 = 1
lgput(k - 2);
fout << fibo[2][2];
return 0;
}