Cod sursa(job #3228632)

Utilizator test1111fsf sfhs f hskfh 11 test1111 Data 9 mai 2024 11:44:04
Problema Al k-lea termen Fibonacci Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

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

const int mod = 666013;

int ans[3][3], a[3][3], x[3][3];

void inmult (int a[][3], int b[][3], int c[][3]) {
    c[1][1] = c[1][2] = c[2][2] = c[2][1] = 0;
    for (int i = 1; i <= 2; i++) {
        for (int j = 1; j <= 2; ++j) {
            for (int k = 1; k <= 2; k++) {
                c[i][j] += 1ll * a[i][k] * b[j][k] % mod;
                c[i][j] %= mod;
            }
        }
    }
}

void egal (int a[][3], int b[][3]) {
    for (int i = 1; i <= 2; i++) {
        for (int j = 1; j <= 2; j++) {
            a[i][j] = b[i][j];
        }
    }
}

void exp (int n) {
    ans[1][1] = ans[2][2] = 1;
    a[1][1] = a[1][2] = a[2][1] = 1;
    while (n > 0) {
        if (n & 1) {
            inmult(ans, a, x);
            egal(ans, x);
        }
        inmult(a, a, x);
        egal(a, x);
        n >>= 1;
    }
    fout << ans[2][2];
}

int main () {
    int n; fin >> n;
    exp(n + 1);
}