CE求调
查看原帖
CE求调
482610
Mortidesperatslav楼主2023/7/20 19:11
#include<bits/stdc++.h>
template<class Type,int n,int m>
	class matrix{
		Type val[n+3][m+3];
		void read(){
			for(register int i=0;i<n;i++)
				for(register int j=0;j<m;j++)
					std::cin>>this->val[i][j];
		}
		void print(){
			for(register int i=0;i<n;i++){
				for(register int j=0;j<m;j++){
					std::cout<<this->val[i][j]<<" ";
				}
				std::cout<<"\n";
			}
		}
		matrix operator -(){
			matrix<Type,n,m> tmp;
			for(register int i=0;i<n;i++)
				for(register int j=0;j<m;j++)tmp.val[i][j]=-(this->val[i][j]);
			return tmp;
		}
		matrix operator +(matrix b){
			matrix<Type,n,m> tmp;
			for(register int i=0;i<n;i++)
				for(register int j=0;j<m;j++)tmp.val[i][j]=(this->val[i][j]+b.val[i][j]);
			return tmp;
		}
		matrix operator =(matrix b){
			for(register int i=0;i<n;i++)
				for(register int j=0;j<m;j++)this->val[i][j]=b.val[i][j];
			return b;
		}
		matrix operator +=(matrix b){
			this=this+b;
			return this;
		}
		matrix operator -(matrix b){
			return this+(-b);
		}
		matrix operator -=(matrix b){
			this=this-b;
			return this;
		}
		matrix operator *(matrix b){
			matrix res;
			memset(res.val,0,sizeof(res.val));
			for(register int i=0;i<n;i++)
				for(register int j=0;j<n;j++)
					for(register int k=0;k<n;k++)
						res.val[i][j]=(res.val[i][j]+(this->val[i][k]%1000000007*b.val[k][j]%1000000007)%1000000007)%1000000007;
			return res;
		}
		matrix operator *=(matrix b){
			this=this*b;
			return this;
		}
		matrix operator ^(int y){
			matrix res;
			res.val[0][0]=-1;
			while(y){
				if(y&1){
					if(res.val[0][0]==-1)res=this;
					else res*=this;
				}
				this*=this;
				y>>=1;
			}
			return res;
		}
		matrix operator ^=(matrix b){
			this=this^b;
			return this;
		}
	};
int main(){
    int n,m;
    std::cin>>n>>m;
    matrix<long long,n,n>x;
    x.read();
    x^=m;
    x.print();
}

有人要求我更新 C%%,然后我写了半天,模板题 CE 了,这是为什么啊(

求调悬关。

2023/7/20 19:11
加载中...