Pagini recente » Cod sursa (job #1241351) | Cod sursa (job #2221280) | Cod sursa (job #2219214) | Diferente pentru home intre reviziile 318 si 317 | Cod sursa (job #884015)
Cod sursa(job #884015)
#include<fstream>
#define mod 666013
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
int r[3][3],I[3][3],R[3][3];
int n;
void copy (int C[3][3]){
int i,j;
for(i=1;i<=2;++i){
for(j=1;j<=2;++j){
C[i][j]=r[i][j];
}
}
}
void mult (int C[3][3],int B[3][3]) {
int i,j,k;
for(i=1;i<=2;++i){
for(k=1;k<=2;++k) {
r[i][k]=0;
for(j=1;j<=2;++j){
r[i][k]=r[i][k]+(C[i][j]*B[j][k])%mod ;
}
r[i][k]%=mod;
}
}
copy(C);
}
void lg(int P[3][3],int A[3][3],int put){
while( put ) {
if(put%2==1){
mult(P,A);
}
mult(A,A);
put>>=1;
}
}
int main () {
f>>n;
I[1][1]=I[2][2]=1;
R[2][1]=R[1][2]=R[2][2]=1;
lg(I,R,n-1);
g<<(I[2][2])%mod;
return 0;
}