Cod sursa(job #2442399)

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

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

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

}

int main(){
	ifstream cin("kfib.in");
	ofstream cout("kfib.out");
	int Z[2][2]={{0, 1},
	       {1, 1}};
	 int A[1][2]={{1,1}};
	 
	 
	 int k;
	 cin >> k;
	 /*for(int i = 0; i < k-2; i++){
	 	mult(A, Z, rez);
        equal(A, rez);
	 }*/
	 int N[2][2]={{1, 0},{0, 1}};
	 int ok = 1;
	 while(k){
	 	//mult(A, N);
	 	
	 	if(k%2==1){
	 		
	 		mult1(N, Z);
	 	}
	 	
	 	k = k/2;
	 	mult1(Z, Z);

	 }
	 //mult(A, Z);
	 cout << N[0][1]<<'\n';
	 return 0;

}