社区讨论
求助!心态直接崩了!
P3390【模板】矩阵快速幂参与者 3已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @mi7dxlbk
- 此快照首次捕获于
- 2025/11/20 20:05 4 个月前
- 此快照最后确认于
- 2025/11/20 20:05 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
long long a[101][101]={0},base[101][101]={0},n;
void poww(int y){
long long i,j,k,gg=0;
//memcpy(a,base,sizeof(base));
while(y!=0){
if(y&1){
if(gg==0){
memcpy(a,base,sizeof(base));
gg=1;
}
else{
long long b[101][101]={0};
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++){
b[i][j]+=a[i][k]*base[k][j];
b[i][j]%=1000000007;
}
memcpy(a,b,sizeof(b));
}
}
long long b[101][101]={0};
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++){
b[i][j]+=base[i][k]*base[k][j];
b[i][j]%=1000000007;
}
memcpy(base,b,sizeof(b));
y>>=1;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
cout << a[i][j];
if(j!=n-1)
cout << " ";
}
if(i!=n-1)
cout << endl;
}
return;
}
int main(){
freopen("testdata.int","r",stdin);
freopen("testdata.out","w",stdout);
long long k,i,j;
cin >> n >> k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin >> base[i][j];
poww(k);
return 0;
}
全都是WA和T,请问有什么优化的方法吗?
回复
共 8 条回复,欢迎继续交流。
正在加载回复...