Cod sursa(job #2442403)

Utilizator red_devil99Mancunian Red red_devil99 Data 23 iulie 2019 20:16:56
Problema Al k-lea termen Fibonacci Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
using namespace std;

void mult1(long long A[2][2], long long B[2][2]) {
	
	int i, j, l;
	long long C[2][2];
	
	for (i = 0; i < 2; i++){
	
		for (j = 0; j < 2; j++){
	          C[i][j] = 0;
			for (l = 0; l < 2; l++) {
	
				C[i][j] = (C[i][j] + A[i][l] * B[l][j])%666013;}}}
				for(int i = 0; i < 2; i++){
					for(int j = 0; j < 2; j++){
						A[i][j] = C[i][j];
					}
				}
		}



int main(){
	ifstream cin("kfib.in");
	ofstream cout("kfib.out");
	long long Z[2][2]={{0, 1},
	       {1, 1}};
	 int A[1][2]={{1,1}};
	 
	 
	 long long k;
	 cin >> k;

	 long long N[2][2]={{1, 0},{0, 1}};
	 while(k){
	 	
	 	
	 	if(k%2==1){
	 		
	 		mult1(N, Z);
	 	}
	 	
	 	k = k/2;
	 	mult1(Z, Z);

	 }
	 
	 cout << N[0][1]<<'\n';
	 return 0;

}