小明共有n个相同的糖果,他想把这n个糖果分给m个同学,但每名同学对糖果个数的需求不一样,第i名同学需求要大于Ci颗糖果(也就是说分给这名同学的糖果数必须大于Ci)。
问满足要求分配方案共有多少种?
由于结果可能很大,你只需要输出模1000000007的值。
输入格式
第一行两个整数n, m
后面有m行,每行一个整数Ci
输出格式
一个整数
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1000000007;
ll ans,n,m,x,inv[1000006];
ll ans1=1;
ll jc(int n){
ll ans=1;
for(ll i=2;i<=n;i++){
ans*=i%mod;
}
}
int main(){
cin>>n>>m;
ans=n;
inv[1]=1;
for(ll i=1;i<=m;i++){
cin>>x;
ans-=x;
}
for(ll i=2;i<=1000000;i++){
inv[i]=(mod-mod/i)*inv[mod%i]%mod;
}
ans1=jc(ans)*inv[jc(m)]*inv[jc(ans-m)];
cout<<ans1%mod;
return 0;
}