zoukankan      html  css  js  c++  java
  • 51Nod 1113 矩阵快速幂

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstdio>
     4 #include <cstring>
     5 using namespace std;
     6 
     7 typedef long long ll;
     8 int n, m;
     9 const int maxn = 105;
    10 const int MOD = 1e9 + 7;
    11 
    12 struct node{
    13     ll a[maxn][maxn];
    14 };
    15 
    16 node A, ans;
    17 
    18 node multi(node x, node y){
    19     node z;
    20     for(int i = 1;i <= n;i++){
    21         for(int j = 1;j <= n;j++){
    22             z.a[i][j] = 0;
    23             for(int k = 1;k <= n;k++){
    24                 z.a[i][j] += x.a[i][k]*y.a[k][j]%MOD;
    25                 z.a[i][j] %= MOD;
    26             }
    27         }
    28     }
    29     return z;
    30 }
    31 
    32 void f(){
    33     while(m > 0){
    34         if(m%2){
    35             //ans = ans*a%MOD;
    36             ans = multi(ans, A);
    37         }
    38         //a = (a*a)%MOD;
    39         A = multi(A,A);
    40         m /= 2;
    41     }
    42 }
    43 
    44 int main(){
    45     ios_base::sync_with_stdio(false);
    46     cin.tie(0);
    47     cin >> n >> m;
    48     for(int i = 1;i <= n;i++){
    49         for(int j = 1;j <= n;j++){
    50             cin >> A.a[i][j];
    51             ans.a[i][j] = A.a[i][j];
    52         }
    53     }
    54     m--;
    55     f();
    56     for(int  i = 1;i <= n;i++){
    57         for(int j = 1;j<=n;j++)
    58         {
    59             if(j == 1){
    60                 cout << ans.a[i][j];
    61             }
    62             else{
    63                 cout << " " << ans.a[i][j];
    64             }
    65         }
    66         cout << endl;
    67     }
    68     return 0;
    69 }
  • 相关阅读:
    php 计算概率,可以任意添加
    如何绕过浏览器的弹窗拦截机制
    javascript iframe 操作(一)
    视频学习站
    技术博文
    js如何打印对象
    云主机
    cookie小细节
    cookie细节
    实用网址
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/9037682.html
Copyright © 2011-2022 走看看