Advertisement
nq1s788

Untitled

Mar 18th, 2023
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. ///
  2. #include <bits/stdc++.h>
  3.  
  4. typedef long long ll;
  5.  
  6. int m;
  7. vector<vector<int>> a; ///m*m
  8. vector<vector<int>> bufet;  ///m*m
  9.  
  10. ll x; ///(x^1)
  11.  
  12. ll normal_pow_int(int n, ll x) {
  13.     if (n == 0) return 1;
  14.     if (n % 2 == 0) {
  15.         ll k = normal_pow_int(n / 2, x);
  16.         return k * k;
  17.     }
  18.     return normal_pow_int(n - 1, x) * x; /// x^(n - 1) * x^1
  19. }
  20.  
  21. void pow_global_int(int n) {  ///(x^1 -> x^n)
  22.     if (n == 0) {
  23.         x = 1;
  24.         return;
  25.     }
  26.     if (n % 2 == 0) {
  27.         pow_global_int(n / 2); /// x^1 -> x^(n/2)
  28.         x *= x; /// x^(n/2) -> x^n;
  29.         return;
  30.     } else {
  31.         ll k = x; /// k = x^1
  32.         pow_global_int(n - 1); /// x^1 -> x^(n - 1) /// x = 1;
  33.         x *= k;  /// (x^(n - 1) -> x^n) ///x = x * k = 1 * x^1 = x^1
  34.         return;
  35.     }
  36. }
  37.  
  38.  
  39. void pow(int n) {
  40.     if (n == 1) {
  41.         return;
  42.     }
  43.     if (n % 2 == 0) {
  44.         pow(n / 2);
  45.         for (int i = 0; i < m; i++){
  46.             for (int j = 0; j < m; ++j){
  47.                 bufet[i][j] = a[i][j];    
  48.             }
  49.         }        
  50.         for (int i = 0; i < m; i++) {
  51.             for (int j = 0; j < m; j++) {
  52.                 a[i][j] = 0;
  53.                 for (int k = 0; k < m; k++) a[i][j] += a[i][k] * a[k][j];
  54.             }
  55.         }
  56.         return;
  57.     } else {
  58.        
  59.     }
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement