wa30pts 求助 码风良好
查看原帖
wa30pts 求助 码风良好
760859
Let_Fly楼主2023/7/18 13:14
#include<bits/stdc++.h>
using namespace std;
#define int long long

const int N=405,mod=1e9+7;

int n,m,c;
int cc[N][N];
int ans;

int quickpow(int a,int b){
	int sum=1;
	while(b){
		if(b&1)
		sum=sum*a%mod;
		a=a*a%mod;
		b>>=1;
	}
	return sum%mod;
}

int f(int x){
    int sum=0;
    for(int k=0;k<=m;k++){
        if(k%2==0){
            sum=(sum-cc[m][k]*quickpow(quickpow(x+1,k)-1,n)%mod+mod)%mod;
        }else{
            sum=(sum+cc[m][k]*quickpow(quickpow(x+1,k)-1,n)%mod)%mod;
        }
    }
    return sum%mod;
}

signed main(){
    cin>>n>>m>>c;
    for(int i=0;i<=400;i++) cc[i][0]=1;
    for(int i=0;i<=400;i++){
        for(int j=1;j<=i;j++){
            cc[i][j]=(cc[i-1][j]+cc[i-1][j-1])%mod;
        }
    }
    for(int i=0;i<=c;i++){
        if(i%2!=0){
            ans=(ans-cc[c][i]*f(i)%mod+mod)%mod;
        }else{
            ans=(ans+cc[c][i]*f(i)%mod)%mod;
        }
    }
    // for(int i=0;i<=c;i++){
    //     cout<<f(i)<<' ';
    // }
    cout<<(ans+mod)%mod;
    return 0;
}

2023/7/18 13:14
加载中...