Cod sursa(job #2368482)

Utilizator TudorCaloianCaloian Tudor-Ioan TudorCaloian Data 5 martie 2019 16:20:27
Problema Al k-lea termen Fibonacci Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;

ifstream fin("kfib.in");
ofstream fout("kfib.out");



void I(int a[2][2], int b[2][2])
{
    int aux[2][2];

    for(int i = 0; i <= 1; i++)
        for(int j = 0; j <= 1; j++)
        {
            aux[i][j] = 0;
            for(int t = 0; t <= 1; t++)
                aux[i][j] = (aux[i][j]+ 1LL * a[i][t]*b[t][j])%MOD;
        }
    for(int i = 0; i <= 1; i++)
        for(int j = 0; j <= 1; j++)
            a[i][j] = aux[i][j];

}

int main()
{

    int k, ans[2][2], z[2][2];
    fin >> k;
    for(int i = 0; i <= 1; i++)
        for(int j = 0; j <= 1; j++)
            ans[i][j] = z[i][j]=0;
    ans[0][0] = ans[1][1] = 1;
    z[0][1] = z[1][0] = z[1][1] = 1;


    for(int i = 0; (1<<i) < k; i++)
    {


        if(((1<<i)&(k-1)))
            I(ans, z);
        I(z,z);

    }

    fout << ans[1][1]%MOD;
    return 0;
}