只对最后一个点求调
查看原帖
只对最后一个点求调
1268678
thrniseven楼主2024/9/15 15:18
#define _CRT_SECURE_NO_WARNINGS

#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
const int N = 101;
const int Mod = 1e9 + 7;
struct marix {
    long long date[N][N];
    int len = 0;
    marix operator* (const marix& a) {
        
        marix ans(this->len);
        auto arr = this->date;

        for (int i = 0; i < len; i++) {
            for (int j = 0; j < len; j++) {
                for (int k = 0; k < len; k++) {
                    ans.date[i][j] += (arr[i][k] * a.date[k][j])%Mod;
                }
                ans.date[i][j] %= Mod;
            }
        }
        return ans;
    }
    marix(int a):len(a) {
        memset(this->date, 0, sizeof(date));
    }
};

int main() {
    int n, k;
    cin >> n;
    cin >> k;
    marix arr(n);
    marix ans(n);
    marix r(n);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin>>arr.date[i][j];
            if (i == j)ans.date[i][j] = 1;
        }
    }
    r = arr;
    while (k > 0) {
        if (k & 1) {
            ans = ans * r;
        }
        r =r*r;
        k >>= 1;
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout << ans.date[i][j]<<" ";
        }
        cout << "\n";
    }
}
2024/9/15 15:18
加载中...