数论完结路过—0—
by HuangBo @ 2018-02-02 09:50:47
同余方程,逆元
```
#include <bits/stdc++.h>
using namespace std;
long long int f[10007],d[10007];
int n,m,x,y,ans=1;
void exgcd(int a,int b){
if(b==0){
x=1;y=0;
return;
}
exgcd(b,a%b);
int t=x;x=y;y=t-a/b*y;
}
int main(){
int a;
scanf("%d%d",&n,&m);
f[1]=f[0]=1;
for(int i=2;i<=n;i++) f[i]=(f[i-1]*i)%10007;
exgcd(f[n],10007);
d[n]=x;
for(int i=n-1;i>=0;i--) d[i]=(d[i+1]*(i+1))%10007;
for(int i=1;i<=m;i++){
scanf("%d",&a);
ans=(ans*f[n]*d[n-a]*d[a])%10007;
n-=a;
}
printf("%d",ans);
return 0;
}
```
by 李尧 @ 2018-09-16 23:13:09