3 2 1
1 1
1 2
期望输出1 但我输出了0
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e2+5,mod=1e9+7;
int n,m,k,u[N],r[N],C[N][N],dp[N][N];
int ksm(int x,int n){
int ret=1;
while(n){
if(n%2){
ret=ret*x%mod;
}
x=x*x%mod,n/=2;
}
return ret;
}
signed main(){
cin>>n>>m>>k;
for(int i=1;i<=m;i++){
cin>>u[i];
}
for(int i=1;i<=m;i++){
cin>>r[i];
}
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]+C[i-1][j-1])%mod;
}
}
for(int i=1;i<=u[1];i++){
dp[1][n-r[1]]=(dp[1][n-r[1]]+ksm(i,n-r[1])*ksm(u[1]-i,r[1]-1)%mod*C[n][r[1]-1])%mod;
}
for(int i=2;i<=m;i++){
for(int j=0;j<=n;j++){
for(int k=0;k<=r[i]-1;k++){
if(j+k<n){
for(int num=1;num<=u[i];num++){
dp[i][j]=(dp[i][j]+dp[i-1][j+k]*C[j+k][k]%mod*ksm(u[i]-num,k)%mod*ksm(num,j)%mod*C[n-1-j-k][r[i]-1-k]%mod*ksm(u[i]-num,r[i]-1-k)%mod*ksm(num,n-j-r[i]))%mod;
}
}
}
}
}
cout<<(dp[m][k]%mod+mod)%mod;
}