Cod sursa(job #1721781)

Utilizator denniscrevusDennis Curti denniscrevus Data 26 iunie 2016 14:48:26
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#define MOD 666013

using namespace std;

int ceva[3][3],i,j,n,rez[3][3];

void inmultire(int a[3][3], int b[3][3])
{
    rez[1][1]=a[1][1]*b[1][1]+a[1][2]*b[2][1];
    rez[1][2]=a[1][1]*b[1][2]+a[1][2]*b[2][2];
    rez[2][1]=a[2][1]*b[1][1]+a[2][2]*b[2][1];
    rez[2][2]=a[2][1]*b[1][2]+a[2][2]*b[2][2];
}

void putere(int baza[3][3], int exp)
{
    int sol[3][3];
    for(;exp;exp>>=1)
    {
        if((exp&1)==1)
        {
            for(i=1;i<=2;i++)
                for(j=1;j<=2;j++)
                    sol[i][j]=rez[i][j];
        }

    }
    for(i=1;i<=2;i++)
        for(j=1;j<=2;j++)
            ceva[i][j]=sol[i][j];
}

int main()
{
    ifstream f("kfib.in");
    ofstream g("kfib.out");

    ceva[1][1]=0;
    ceva[1][2]=1;
    ceva[2][1]=1;
    ceva[2][2]=1;

    f>>n;

    putere(ceva[3][3],n-1);

    for(i=1;i<=2;i++)
        for(j=1;j<=2;j++)
            g<<ceva[i][j];
}