Cod sursa(job #1780943)

Utilizator dsergiu05Sergiu Druga dsergiu05 Data 16 octombrie 2016 16:54:06
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>

using namespace std;

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

int v[2]={0,1}, m[2][2]={{0,1},{1,1}}, m2[2][2]={{1,0},{0,1}};
int v_aux[2], m_aux[2][2];

int main () {
    int n;
    fin>>n;

    if (n==0) {
        fout<<"0\n";
    } else {
        for (int a=1; a<=n-1; a++) {
            for (int i=0; i<2; i++) {
                for (int j=0; j<2; j++) {
                    m_aux[i][j]=0;
                    for (int k=0; k<2; k++) {
                        m_aux[i][j]+=m2[i][k]*m[k][j];
                    }
                }
            }
            for (int i=0; i<2; i++) {
                for (int j=0; j<2; j++) {
                    m2[i][j]=m_aux[i][j];
                }
            }
        }
        for ( int j = 0; j < 2; ++ j ) {
            v_aux[j] = 0;
            for ( int k = 0; k < 2; ++ k ) {
                v_aux[j] += v[k]*m2[k][j];
            }
        }
        fout << v_aux[1] << "\n";
    }

    return 0;
}