Pagini recente » Cod sursa (job #132690) | Istoria paginii utilizator/florina08 | Cod sursa (job #2783003) | Istoria paginii utilizator/filestraffff | Cod sursa (job #2336044)
#include <iostream>
#include <cstdio>
#define MOD 666013
using namespace std;
void inmultire(int a[2][2], int b[2][2])
{
int aux[2][2];
aux[0][0] = (1ll * a[0][0] * b[0][0] + 1ll * a[0][1] * b[1][0]) % MOD;
aux[0][1] = (1ll * a[0][0] * b[0][1] + 1ll * a[0][1] * b[1][1]) % MOD;
aux[1][0] = (1ll * a[1][0] * b[0][0] + 1ll * a[1][1] * b[1][0]) % MOD;
aux[1][1] = (1ll * a[1][0] * b[0][1] + 1ll * a[1][1] * b[1][1]) % MOD;
a[0][0] = aux[0][0];
a[1][0] = aux[1][0];
a[0][1] = aux[0][1];
a[1][1] = aux[1][1];
}
int main()
{
freopen("kfib.in", "r", stdin);
freopen("kfib.out", "w", stdout);
int A[2][2] = {{1,1}, {1,0}};
int rez[2][2] = {{1,0}, {0,1}};
int k;
scanf("%d", &k);
k--;
int mask = 1;
for (; mask <= k; mask <<= 1)
{
if (mask & k)
{
inmultire(rez, A);
}
inmultire(A, A);
}
printf("%d\n", rez[0][0]);
return 0;
}