Cod sursa(job #419805)

Utilizator adrianraduleaRadulea Adrian adrianradulea Data 18 martie 2010 00:10:46
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<stdio.h>
FILE *f,*g;
long long n,a,b,c,d,az,bz,cz,dz;
void lgput(long long &a,long long &b,long long &c,long long &d,long long n)
{ if(n==1) { a=0; b=c=1; d=1; }
  else if(n%2==0) { lgput(a,b,c,d,n/2); az=a*a+b*c; bz=a*b+b*d; cz=a*c+c*d; dz=c*b+d*d; a=az; b=bz; c=cz; d=dz; }
  else { lgput(a,b,c,d,n/2); az=a*b+b*d; bz=a*a+b*c+a*b+b*d; cz=c*b+d*d; dz=c*a+c*d+c*b+d*d; a=az; b=bz; c=cz; d=dz; }
}
int main()
{ f=fopen("kfib.in","r"); g=fopen("kfib.out","w");
  fscanf(f,"%lld",&n);
  a=0; b=c=d=1; n--;
  lgput(a,b,c,d,n);
  fprintf(g,"%lld",d);
  fclose(g);
  return 0;
}