30分求助
查看原帖
30分求助
1327854
zhengyuchen201314楼主2024/12/29 09:44
#include <bits/stdc++.h>
using namespace std;
int a[1002];
const long long MOD=1e9+7;
long long c(int m,int n){
	if(n*2>m) return c(m,m-n);
	long long s=1;
	for(int i=m;i>=m-n+1;i--){
		s*=i;
	}
//	cout << s;
	for(int i=1;i<=n;i++){
		s/=i;
	}
	return s%MOD;
}
int main()
{
	int t;
	cin >> t;
	while(t--){
		int n,m;
		long long s=0,ans=1,ls;
		cin >> n >> m;
		for(int i=1;i<=m;i++){
			cin >> a[i];
			s+=a[i];
		}
//		cout << s << ' ' << n << endl;
		ls=n+(s>n);
		for(int i=1;i<=m;i++){
			ans=(ans*c(ls,a[i]))%MOD;
			ls-=a[i];
		}
		cout << ans%MOD << endl;
	}
	return 0;
}
2024/12/29 09:44
加载中...