Cod sursa(job #2389134)

Utilizator DovlecelBostan Andrei Dovlecel Data 26 martie 2019 20:34:10
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>

using namespace std;
ifstream in("kfib.in");
ofstream out("kfib.out");
int n,sol;
struct mat
{
    int a11,a12,a22,a21;
}a,aux;
mat inmultire(mat a,mat b)
{
    mat c;
    c.a11=a.a11*b.a11+ a.a12*b.a21;
    c.a12=a.a11*b.a12 + a.a12*b.a22;
    c.a21=a.a21*b.a11 + a.a22*b.a21;
    c.a22=a.a21*b.a12 + a.a22*b.a22;
    return c;
}

int main()
{
    in>>n;
    n--;
    a.a11=1;
    a.a12=1;
    a.a21=1;
    a.a22=0;
    aux = a;
    aux.a22=1;
    int k=0;
    while((1<<k)<=n)
    {
        if((1<<k)&n)
            aux=inmultire(aux,a);
        k++;
        a=inmultire(a,a);
    }
    sol=aux.a11+aux.a21;
    out<<sol;
    return 0;
}