Cod sursa(job #2136303)

Utilizator DR27092000Bilcu Dragos Gabriel DR27092000 Data 19 februarie 2018 20:21:11
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("kfib.in");
ofstream g("kfib.out");
int a[2][2],b[2][2],c[2][2],d[2][2],k;
 void matrice()
{
    for(int i=1;i<(k-1)/2;i++)
    {
        c[0][0]=b[0][0]*a[0][0]+b[0][1]*a[1][0];
        c[1][0]=b[1][0]*a[0][0]+b[1][1]*a[1][0];
        c[0][1]=b[0][0]*a[0][1]+b[0][1]*a[1][1];
        c[1][1]=b[1][0]*a[0][1]+b[1][1]*a[1][1];
        b[0][0]=c[0][0];
        b[1][0]=c[1][0];
        b[0][1]=c[0][1];
        b[1][1]=c[1][1];
    }

        c[0][0]=b[0][0]*b[0][0]+b[0][1]*b[1][0];
        c[1][0]=b[1][0]*b[0][0]+b[1][1]*b[1][0];
        c[0][1]=b[0][0]*b[0][1]+b[0][1]*b[1][1];
        c[1][1]=b[1][0]*b[0][1]+b[1][1]*b[1][1];
  if((k-1)%2!=0)
  {     d[0][0]=c[0][0]*a[0][0]+c[0][1]*a[1][0];
        d[1][0]=c[1][0]*a[0][0]+c[1][1]*a[1][0];
        d[0][1]=c[0][0]*a[0][1]+c[0][1]*a[1][1];
        d[1][1]=c[1][0]*a[0][1]+c[1][1]*a[1][1];

  }






}
int main()
{ f>>k;
a[0][0]=0;
a[0][1]=1;
a[1][0]=1;
a[1][1]=1;
b[0][0]=0;
b[0][1]=1;
b[1][0]=1;
b[1][1]=1;
matrice();
if((k-1)%2==0)g<<c[1][1]%666013;
else g<<d[1][1]%666013;

    return 0;
}