本机RE,提交AC?!
查看原帖
本机RE,提交AC?!
528917
ma_niu_bi楼主2022/8/4 12:43

为什么第一个数据下载下来在本机上跑要RE,而且在NOILinux上跑也RE,但提交却能AC?

记录

#include<bits/stdc++.h>
#define int long long
const int MOD=1000000007;
using namespace std;
class Matrix{
	private:
		int n,m;
		int num[101][101];	
	public:
		Matrix(int n,int m){
			this->n=n,this->m=m;
		}
		void SetN(int n){
			this->n=n;
		}
		void SetM(int m){
			this->m=m;
		}
		void SetNum(int i,int j,int x){
			this->num[i][j]=x;
		}
		void NumUp(int i,int j,int x){
			this->num[i][j]=this->num[i][j]+x;
		}
		int GetNum(int i,int j){
			return num[i][j];
		}
		void Read(){
			for(int i=1;i<=n;i++){
				for(int j=1;j<=m;j++){
					scanf("%lld",&num[i][j]);
				}
			}
		}
		void Write(){
			for(int i=1;i<=n;i++){
				for(int j=1;j<=m;j++){
					printf("%lld ",num[i][j]);
				}
				putchar('\n');
			}
		}
		Matrix operator *(Matrix x){
			int am=this->m,an=this->n,bm=x.m,bn=x.n;
			Matrix ans(an,bm);		
			for(int i=1;i<=an;i++){
				for(int j=1;j<=bm;j++){
					ans.SetNum(i,j,0);
					for(int k=1;k<=am;k++){
						ans.NumUp(i,j,((this->GetNum(i,k))*(x.GetNum(k,j)))%MOD);
						ans.SetNum(i,j,ans.GetNum(i,j)%MOD);
					}
				}
			}
			return ans;
		}
};
Matrix Pow(Matrix x,int k){
	if(k==1)return x;
	Matrix ans=Pow(x,k>>1);
	ans=ans*ans;
	if(k%2==1)ans=ans*x;
	return ans;
}
signed main(){
	int n,k;
	scanf("%lld%lld",&n,&k);
	Matrix a(n,n);
	a.Read();
	Pow(a,k).Write();
	return 0;
}
2022/8/4 12:43
加载中...