社区讨论
小萌新求助
P3390【模板】矩阵快速幂参与者 2已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @lobjbbdr
- 此快照首次捕获于
- 2023/10/29 21:56 2 年前
- 此快照最后确认于
- 2023/11/04 03:00 2 年前
求求卢工的各位大佬
我是个全WA的小萌新
但是就是看不出错误;
求求各位路过的大佬帮帮忙。
C#include <bits/stdc++.h>
using namespace std;
static long long MOD = pow(10,9) + 7;
long long n;
struct matrake{
long long A[101][101];
matrake(){
memset(A,0,sizeof(A));
}
};
struct matrake time_up(struct matrake one,struct matrake two){
struct matrake ans;
for (int i = 0;i<n;i++){
for (int j = 0;j<n;j++){
for (int x = 0;x<n;x++){
ans.A[i][j] = (ans.A[i][j] + ((one.A[i][x] * two.A[j][x]) % MOD)) % MOD;
//cout << one.A[i][x] << " " << two.A[x][j] << " x:" << i << " y" << j << endl;
}
//cout << ans.A[i][j] << " ";
}
//cout << endl;
}
//cout << endl;
return ans;
}
int main(){
long long k;
cin >> n >> k;
struct matrake temp;
struct matrake ans;
for (int i = 0;i<n;i++){
for (int j = 0;j<n;j++){
scanf("%lld",&temp.A[i][j]);
ans.A[i][j] = temp.A[i][j];
}
}
k --;
while (k){
//cout << k << endl;
if (k & 1){
ans = time_up(ans,temp);
//cout << "yes" << endl << endl;
}
temp = time_up(temp,temp);
k >>= 1;
}
for (int i = 0;i<n;i++){
for (int j = 0;j<n;j++){
cout << ans.A[i][j] << " ";
}
cout << endl;
}
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...