fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<vector<int>> multiply(vector<vector<int>> A, vector<vector<int>> B){
  5. int l1=A.size();
  6. int l2=B.size();
  7. vector<vector<int>> tmp;
  8. for(int i=1;i<l1;i++)
  9. for(int j=1;j<l2;j++){
  10. int sum=0;
  11. for(int i1=1;i1<l1;i1++){
  12. sum+=A[i][i1]*B[i1][j];
  13. }
  14. tmp[i][1];
  15. }
  16. return tmp;
  17. }
  18. vector<vector<int>> pow(vector<vector<int>> A, int p){
  19. if(p==1) return A;
  20. //p is odd
  21. if(p&1){
  22. return multiply(A,pow(A,p-1));
  23. }
  24. vector<vector<int>> X=pow(A,p/2);
  25. return multiply(X,X);
  26. }
  27.  
  28. int main()
  29. {
  30. int n;cin>>n;
  31. vector<int> F1;
  32. int k=2;//k=2 for fibonacci as any term depends on previous 2 terms
  33. F1.push_back(0); F1.push_back(1); //creating a starting matrix [0 1]
  34. vector<vector<int>> T(k+1,vector<int>(k+1));
  35. //Transformation matrix
  36. //0 1
  37. //1 1
  38. T[1][1]=0; T[1][2]=1;
  39. T[2][1]=1; T[2][2]=1;
  40.  
  41. //calc (n-1)th power of T matrix
  42. T=pow(T,n-1);
  43. for(int i=1;i<T.size();i++)
  44. {
  45. for(int j=1;j<T.size();j++){
  46. cout<<T[i][j]<<" ";
  47. }
  48. cout<<endl;
  49. }
  50.  
  51.  
  52. }
Success #stdin #stdout 0s 4752KB
stdin
3
stdout
Standard output is empty