fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5. vector<vector<int> > mult(vector<vector<int> > &a, vector<vector<int> > &b,int mod);
  6. vector<vector<int> > pow(vector<vector<int> >a,int k,int mod);
  7.  
  8. int main(){
  9. int n,s,mod;
  10. cin >> n >> s >> mod;
  11. vector<vector<int> > a(n,vector<int> (n,0));
  12. for(int i=0;i<n;i++){
  13. for(int j=0;j<n;j++){
  14. cin >> a[i][j];
  15. }
  16. }
  17. a=pow(a,s,mod);
  18. for(int i=0;i<n;i++){
  19. for(int j=0;j<n;j++){
  20. cout << a[i][j] << " ";
  21. }
  22. cout << "\n";
  23. }
  24. return 0;
  25. }
  26.  
  27. vector<vector<int> > mult(vector<vector<int> > &a, vector<vector<int> > &b,int mod){
  28. int n = a.size();
  29. vector<vector<int> > res(n,vector<int> (n,0));
  30.  
  31. for(int i=0;i<n;i++){
  32. for(int j=0;j<n;j++){
  33. for(int p=0;p<n;p++){
  34. res[i][j] +=((a[i][k]%mod)+(b[k][j]%mod))%mod;
  35. }
  36. }
  37. }
  38.  
  39. return res;
  40. }
  41.  
  42. vector<vector<int> > pow(vector<vector<int> >a,int k,int mod){
  43. if(k<=1)
  44. return a;
  45. vector<vector<int> > b=pow(a,k/2);
  46. if((k%2)==0)
  47. return mult(b,b,mod);
  48. else
  49. return mult(b,mult(b,a,mod),mod);
  50. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘std::vector<std::vector<int> > mult(std::vector<std::vector<int> >&, std::vector<std::vector<int> >&, int)’:
prog.cpp:34:24: error: ‘k’ was not declared in this scope
     res[i][j] +=((a[i][k]%mod)+(b[k][j]%mod))%mod;
                        ^
prog.cpp: In function ‘std::vector<std::vector<int> > pow(std::vector<std::vector<int> >, int, int)’:
prog.cpp:45:34: error: too few arguments to function ‘std::vector<std::vector<int> > pow(std::vector<std::vector<int> >, int, int)’
  vector<vector<int> > b=pow(a,k/2);
                                  ^
prog.cpp:42:22: note: declared here
 vector<vector<int> > pow(vector<vector<int> >a,int k,int mod){
                      ^~~
prog.cpp:49:21: error: invalid initialization of non-const reference of type ‘std::vector<std::vector<int> >&’ from an rvalue of type ‘std::vector<std::vector<int> >’
   return mult(b,mult(b,a,mod),mod);
                 ~~~~^~~~~~~~~
prog.cpp:27:22: note:   initializing argument 2 of ‘std::vector<std::vector<int> > mult(std::vector<std::vector<int> >&, std::vector<std::vector<int> >&, int)’
 vector<vector<int> > mult(vector<vector<int> > &a, vector<vector<int> > &b,int mod){
                      ^~~~
stdout
Standard output is empty