Pagini recente » Cod sursa (job #1702186) | Cod sursa (job #1009689) | Cod sursa (job #2559945) | Cod sursa (job #624828) | Cod sursa (job #491380)
Cod sursa(job #491380)
#include <fstream>
using namespace std;
ifstream in("kfib.in");
ofstream out("kfib.out");
long long x[3][3],rez[3][3],y[3][3],n;
void inmultire(long long a[3][3],long long b[3][3]){
long long c[3][3];
c[1][1]=(a[1][1]*b[1][1]%666013 + a[1][2]*b[2][1]%666013)%666013;
c[1][2]=(a[1][1]*b[1][2]%666013 + a[1][2]*b[2][2]%666013)%666013;
c[2][1]=(a[2][1]*b[1][1]%666013 + a[2][2]*b[2][1]%666013)%666013;
c[2][2]=(a[2][1]*b[1][2]%666013 + a[2][2]*b[2][2]%666013)%666013;
a[1][1]=c[1][1];
a[1][2]=c[1][2];
a[2][1]=c[2][1];
a[2][2]=c[2][2];
}
void prelucrare(){
x[1][1]=1;
x[1][2]=1;
x[2][1]=1;
x[2][2]=0;
rez[1][1]=1;
rez[1][2]=0;
rez[2][1]=0;
rez[2][2]=1;
while(n!=0){
if(n%2!=0){
inmultire(rez,x);
}
inmultire(x,x);
n=n/2;
}
out<<rez[1][1]+rez[1][2];
}
int main(){
in>>n;
n=n-2;
prelucrare();
return 0;
}