1 条题解

  • 0
    @ 2024-5-25 20:26:39
    #include <bits/stdc++.h>
    #define ll long long 
    #define P 1000000007
    using namespace std;
    const int N=355;
    int n,m,k,s,t;
    ll C[N][N],f[N][N];
    ll qpow(ll a,ll b){
    	ll ans=1;
    	for (;b;b>>=1){
    		if (b&1) ans=ans*a%P;
    		a=a*a%P;
    	}
    	return ans;
    }
    int main(){
    	cin>>n;
    	for (int i=0;i<=n;++i){
    		C[i][0]=1;
    		for (int j=1;j<=i;++j)
    			C[i][j]=(C[i-1][j-1]+C[i-1][j])%P;
    	}
    	f[1][1]=1;	
    	for (int i=2;i<=n;++i)
    		for (int j=1;j<=n;++j)
    			for (int k=0;k<=j;++k)
    				if (k==i) (f[i][j]+=C[j][k]*qpow(i-1,j-k))%=P;
    				else (f[i][j]+=C[j][k]*f[i-1][j-k])%=P;
    	cout<<f[n][n];
    	
    }
    
    • 1

    信息

    ID
    750
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    7
    已通过
    2
    上传者