Cod sursa(job #3309330)

Utilizator vlad7654vladimir manescu vlad7654 Data 3 septembrie 2025 16:38:58
Problema Al k-lea termen Fibonacci Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
const int MOD=666013;
int ans[2][2], a[2][2], n;
void multiplication(int a[2][2], int b[2][2]){
    int c[2][2]={};
    for(int i=0;i<=1;i++){
        for(int j=0;j<=1;j++){
            for(int k=0;k<=1;k++){
                c[i][j]=(c[i][j]+(1LL*a[i][k]*b[k][j])%MOD)%MOD;
            }
        }
    }
    for(int i=0;i<=1;i++){
        for(int j=0;j<=1;j++){
            a[i][j]=c[i][j];
        }
    }
}
void fast_exp(int putere){
    while(putere){
        if(putere%2==1){
            multiplication(ans, a);
        }
        multiplication(a,a);
        putere/=2;
    }
}
int main(){
    fin>>n;
    a[0][0]=0;
    a[0][1]=a[1][0]=a[1][1]=1;
    ans[1][0]=ans[1][1]=0;
    ans[0][0]=0;
    ans[0][1]=1;
    fast_exp(n);
    fout<<ans[0][0];
}