Pagini recente » Cod sursa (job #2579229) | Cod sursa (job #1087283) | Cod sursa (job #222703) | Cod sursa (job #2152464) | Cod sursa (job #933845)
Cod sursa(job #933845)
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
int N, Mat[2][2], A[2][2];
void Mult(int A[2][2], int B[2][2])
{
int C[2][2], i, j, k;
for(i = 0; i < 2; ++ i)
for(j = 0; j < 2; ++ j)
{
long long Ans = 0;
for(k = 0; k < 2; ++ k)
Ans += 1LL * A[i][k] * B[k][j];
C[i][j] = Ans % 666013;
}
for(i = 0; i < 2; ++ i)
for(j = 0; j < 2; ++ j)
A[i][j] = C[i][j];
}
int main()
{
freopen("kfib.in", "r", stdin);
freopen("kfib.out", "w", stdout);
scanf("%i", &N);
Mat[0][0] = Mat[0][1] = 1;
A[0][1] = A[1][0] = A[1][1] = 1;
N -= 2;
while(N)
{
if(N % 2) Mult(Mat, A);
Mult(A, A);
N /= 2;
}
printf("%i\n", Mat[0][1]);
return 0;
}