递推求调
查看原帖
递推求调
799098
chengzihan620楼主2023/12/4 16:14
#include<bits/stdc++.h>
using namespace std;
inline int read(){int x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
while(isdigit(c)){x=(x<<3)+(x<<1)+c-'0';c=getchar();}return x*f;}
void Write(int x){if(x<0){x=-x;putchar('-');}if(x){Write(x/10);putchar(x%10+'0');}}
void write(int x){Write(x);putchar(' ');}

long long n,m,s=1,C[10001][101];
const long long mod=10007;

int main(){
	cin>>n>>m;
	C[0][0]=1;
	for(long long i=1;i<=10000;i++)
		for(long long j=0;j<=100;j++)
			C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
	for(long long i=1;i<=m;i++){
		long long t;
		cin>>t;
		if(t>n){
			cout<<0;
			return 0;
		}
		s=(s*C[n][t])%mod;
		n-=t;
	}
	cout<<s;
	return 0;
}
2023/12/4 16:14
加载中...