Cod sursa(job #3245062)

Utilizator Ruxandra009Ruxandra Vasilescu Ruxandra009 Data 27 septembrie 2024 10:32:36
Problema Al k-lea termen Fibonacci Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>

using namespace std;

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

const long long mod = 666013;
long long n;

long long fibo(long long x)
{
    if(x == 0)
        return 0;

    if(x <= 2)
        return 1;

    if(x % 2 == 0)
    {
        long long k = x / 2;
        long long f1 = fibo(k - 1);
        long long f2 = fibo(k);
        long long f3 = (f1 + f2) % mod;

        return (1LL * f2 * (f1 + f3) % mod) % mod;
    }

    else
    {
        long long k = (x - 1) / 2;
        long long f1 = fibo(k);
        long long f2 = fibo(k + 1);

        return ((1LL * f1 * f1) % mod + (1LL * f2 * f2) % mod) % mod;
    }
}

int main()
{
    f >> n;
    g << fibo(n);
    return 0;
}