0分WA求助!写了一大堆,最后都不知道自己写了什么!
查看原帖
0分WA求助!写了一大堆,最后都不知道自己写了什么!
922691
Hisy楼主2023/8/22 20:57
#include<iostream>
using namespace std;
class matrix {
	private:
		long long map[101][101]={0};
		int len=0;
	public:
		matrix(int size):len(size){}; 
		long long *operator[](int ask){
			return map[ask];
		};
		matrix operator*(matrix mull){
			matrix answer(len);
			for(int its=1;its<=len;its++){
				for(int fex=1;fex<=len;fex++){
					for(int key=1;key<=len;key++){
						answer[its][fex]+=(map[its][key])*(mull[key][fex])%1000000007;
						answer[its][key]%=1000000007;
					};
				};
			};
			return answer;
		};
		void operator&(int init){
			for(int its=1;its<=len;its++){
				map[its][its]=init;
			};
		};
		void operator|(int size){
			len=size;
		};
		friend void operator>>(istream& in,matrix& power){
			for(int its=1;its<=power.len;its++){
				for(int fex=1;fex<=power.len;fex++){
					in>>power[its][fex];
				};
			};
		};
		friend void operator<<(ostream& out,matrix& power){
			for(int its=1;its<=power.len;its++){
				for(int fex=1;fex<=power.len;fex++){
					out<<power[its][fex]<<" ";
				};
				out<<endl;
			};
		};
};
int main(int argc,char **argv){
	int num,key;
	cin>>num>>key;
	matrix power(num),spell(num);
	cin>>power;
	spell&1;
	while(key){
		if(key&1){
			spell*=power;
		};
		power*=power;
		key>>=1;
	};
	cout<<spell;
	return 0;
};
2023/8/22 20:57
加载中...