Cod sursa(job #3251634)

Utilizator rotti321Rotar Mircea rotti321 Data 26 octombrie 2024 12:27:33
Problema Al k-lea termen Fibonacci Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>
#define MOD 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");

void prod(long long a[2][2],long long b[2][2])
{
    int i,j,k;
    long long c[2][2]={};
    for(i=0; i<2; i++)
        for(j=0; j<2; j++)
            for(k=0; k<2; k++)
                c[i][j]+=a[i][k]*b[k][j];
    for(i=0; i<2; i++)
        for(j=0; j<2; j++)
            a[i][j]=c[i][j]%MOD;
}




int main(){
    long long a[2][2]={1,0,0,1};
    long long f[2][2]={0,1,1,1};
    int n,i,j;
    fin>>n; n--;
    while(n){
        if(n%2) prod(a,f);
        prod(f,f);
        n/=2;
    }
    fout<<a[1][1];
    return 0;
}