Pagini recente » Cod sursa (job #517654) | Cod sursa (job #1945177) | Cod sursa (job #300806) | Cod sursa (job #2821987) | Cod sursa (job #517657)
Cod sursa(job #517657)
#include <stdio.h>
#define MOD 666013
void mult(long long A[2][2], long long B[2][2]) {
static long long C[2][2];
C[0][0] = (1LL*A[0][0]*B[0][0] + 1LL*A[0][1]*B[1][0]) % MOD;
C[0][1] = (1LL*A[0][0]*B[0][1] + 1LL*A[0][1]*B[1][1]) % MOD;
C[1][0] = (1LL*A[1][0]*B[0][0] + 1LL*A[1][1]*B[1][0]) % MOD;
C[1][1] = (1LL*A[1][0]*B[0][1] + 1LL*A[1][1]*B[1][1]) % MOD;
A[0][0] = C[0][0]; A[0][1] = C[0][1];
A[1][0] = C[1][0]; A[1][1] = C[1][1];
}
int main() {
long n;
fscanf(fopen("kfib.in", "r"), "%ld", &n);
n --;
long long P[2][2] = {{1,1},{1,0}};
long long A[2][2] = {{1,0},{0,1}};
long i;
for (i=1; i<=n; i<<=1) {
if ( n&i )
mult(A,P);
mult(P, P);
}
fprintf(fopen("kfib.out", "w"), "%lld\n", A[0][0]);
return 0;
}