Cod sursa(job #3209593)

Utilizator Ionut10Floristean Ioan Ionut10 Data 2 martie 2024 22:11:49
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MOD = 666013;

int n;

struct matrix {
    long long a, b, c, d;
};
matrix A = {1, 1, 1, 0};

matrix mult(matrix p, matrix q) {
    return {
        (p.a * q.a + p.b * q.c) % MOD,
        (p.a * q.b + p.b * q.d) % MOD,
        (p.c * q.a + p.d * q.c) % MOD,
        (p.c * q.b + p.d * q.d) % MOD,
    };
}

matrix putere(matrix a, int n) {
    matrix res = {1, 0, 0, 1};

    while (n > 0) {
        if (n & 1) {
            res = mult(res, a);
        }
        a = mult(a, a);
        n /= 2;
    }

    return res;
}

int main()
{
    fin >> n;
    matrix F = putere(A, n - 1);
    fout << F.a;
    return 0;
}