Cod sursa(job #2839900)

Utilizator Savu_Stefan_CatalinSavu Stefan Catalin Savu_Stefan_Catalin Data 26 ianuarie 2022 18:32:37
Problema Al k-lea termen Fibonacci Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>

using namespace std;
ifstream in("kfib.in");
ofstream out("kfib.out");
long long  a[11][11],c[11][11],n,ras[11][11];
void afis()
{
    for (long long  i=1;i<=2;++i)
        for (long long  j=1;j<=2;++j)
        out<<a[i][j]<<" ";
    out<<'\n';
}
void mul(long long  a[11][11],long long  b[11][11])
{
    for (long long  i=1;i<=2;++i)
        for (long long  j=1;j<=2;++j)
        c[i][j]=0;
    for (long long  i=1;i<=2;++i)
        for (long long  j=1;j<=2;++j)
            for (long long  k=1;k<=2;++k)
            {
                c[i][j]+=a[i][k]*b[k][j];
            }
    for (long long  i=1;i<=2;++i)
        for (long long  j=1;j<=2;++j)
        a[i][j]=c[i][j]%666013;
}
void po(long long  n)
{
    while (n)
    {
     if (n%2==0) {n/=2; mul(a,a);}
     else {n--; mul(ras,a);}
    }
}
int  main()
{
    in>>n;
    a[1][2]=a[2][1]=a[2][2]=1;
    ras[1][1]=ras[2][2]=1;
    po(n);
    out<<ras[2][1];
    return 0;
}