社区讨论

求助!心态直接崩了!

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 条回复,欢迎继续交流。

正在加载回复...