某不知名蒟蒻的无能狂怒
查看原帖
某不知名蒟蒻的无能狂怒
233972
秋水1024楼主2020/8/5 21:08

关于我的代码只输出1这回事

代码1

#include<iostream>
#include<cstring>
#define ll long long
using namespace std;
const ll p=9999973;
ll n,m,f[101][101][101],ans=0;
ll c(ll x){
	return ((x+1)*(x+2))%p;
}
int main()
{
	cin>>n>>m;
	memset(f,0,sizeof(f));
	f[0][0][0]=1;
	for(ll i=1;i<=n;i++){
		for(ll a=0;a<=m;a++){
			for(ll b=0;a+b<=m;b++){
				f[i][a][b]=f[i-1][a][b];
				if(b>=1)f[i][a][b]+=(f[i-1][a+1][b-1]*(a+1))%p;
				if(a+b-1<=m)f[i][a][b]+=(f[i-1][a][b+1]*(b+1))%p;
				if(b>=2)f[i][a][b]+=(f[i-1][a+2][b-2]*c(a))%p;//c(2,a+2)=a+2!/(a!*2!)=(a+1)*(a+2)/2
				if(a+b-2<=m)f[i][a][b]+=(f[i-1][a][b+2]*c(b))%p;
				if(a+b-1<=m)f[i][a][b]+=(f[i-1][a+1][b]*(a+1)*b)%p;
				f[i][a][b]%=p;
			}
		}
	}
	for(ll a=0;a<=m;a++){
		for(ll b=0;b<=m;b++){
			ans+=f[n][a][b];
			ans%=p;
			cout<<f[n][a][b]<<" ";
		}
		cout<<endl;
	}
	cout<<ans;
	return 0;
}

代码2

#include<iostream>
#include<cstring>
#define ll long long
using namespace std;
const ll p=9999973;
ll n,m,f[101][101][101],ans=0;
ll c(ll x){
	return ((x+1)*(x+2)/2)%p;//c(2,x+2)=x+2!/(x!*2!)=(x+1)*(x+2)/2
}
int main()
{
	cin>>n>>m;
	memset(f,0,sizeof(f));
	f[0][0][0]=1;
	for(ll i=0;i<=n;i++){
		for(ll a=0;a<=m;a++){
			for(ll b=0;a+b<=m;b++){
				if(!f[i][a][b])continue;
				f[i+1][a][b]+=f[i][a][b];
				if(b>=1)f[i+1][a-1][b+1]+=(f[i][a][b]*a)%p;
				if(a+b+1<=m)f[i+1][a][b-1]+=(f[i][a][b]*b)%p;
				if(b>=2)f[i+1][a-2][b+2]+=(f[i][a][b]*c(a))%p;
				if(a+b+2<=m)f[i+1][a][b-2]+=(f[i][a][b]*c(b))%p;
				if(a+b+1<=m&&b>1)f[i+1][a-1][b]+=(f[i][a][b]*a*b)%p;
			}
		}
	}
	for(ll a=0;a<=m;a++){
		for(ll b=0;b<=m;b++){
			ans+=f[n][a][b];
			ans%=p;
			//cout<<f[n][a][b]<<" ";
		}
		cout<<endl;
	}	
	cout<<ans;
	return 0;
}
2020/8/5 21:08
加载中...