求助
查看原帖
求助
420102
phmaprostrate楼主2021/8/15 16:55

我在本地运行结果 每次都不一样 不知为啥

#include<bits/stdc++.h>
using namespace std;
const int mod = 1000;
struct matrix{
	int z[10][10];
};
int n;
matrix operator * (const matrix &a,matrix &b){
	matrix c;
	for(int k = 0;k < 8;k++)
	 for(int i = 0;i < 8;i++)
	  for(int j = 0;j < 8;j++)
	   c.z[i][j] = (c.z[i][j]  + a.z[i][k] * b.z[k][j]) % mod;
	   return c;
}
matrix ksm(matrix base,int power){
	matrix ans;
	for(int i = 0;i < 8;i++) ans.z[i][i] = 1;
	while(power){
		if(power & 1){
			ans = ans * base;
		}
		base = base * base;
		power = power >> 1;
	}
	return ans;
}
	matrix dp;	matrix ans;
int main(){
	cin >> n;
	for(int i = 0;i < 8;i++){
		dp.z[i][i + 1] = 1;
		dp.z[i + 1][i] = 1;
	}
	dp.z[0][7] = dp.z[7][0] = 1;
	dp.z[4][3] = dp.z[4][5] = 0;
	cout<<endl<<endl;
	ans = ksm(dp,n);
	//for(int i = 0;i < 8;i++){
	//	for(int j = 0;j < 8;j++)
	//	cout<<ans.z[i][j]<<" ";
	//	cout<<endl;
//	}
	cout<<ans.z[0][4];
	return 0;
	}
2021/8/15 16:55
加载中...