[评测记录](https://www.luogu.org/recordnew/show/20572870)
by 什么叫中二呀 @ 2019-07-10 19:58:46
动态规划劝退.....
by 那一条变阻器 @ 2019-07-10 20:30:40
可以加一下注释吗?有点看不懂
by 那一条变阻器 @ 2019-07-10 20:32:21
@[812季涛](/space/show?uid=118040)
by 那一条变阻器 @ 2019-07-10 20:37:33
好吧……
```
#include<cstdio>
#define ll long long
ll fac[10000]={1},inf[10000]={1},N,t,k,s=1,m=10007;
ll C(ll a,ll b){return fac[a]*inf[b]%m*inf[a-b]%m;}//求组合数
ll p(ll a,ll b){return b?(b&1?a:1)*p(a*a%m,b>>1)%m:1;}//快速幂
int main()
{
for(int i=1;i<10000;i++)fac[i]=fac[i-1]*i%m,inf[i]=p(fac[i],m-2)%m;//预先把i!与其逆元的表打出来
for(scanf("%lld%lld",&N,&t);scanf("%lld",&k)!=EOF;N-=k)s=s*C(N,k)%m;//直接计算
printf("%lld",N<0?0:s);
return 0;
}
```
by 什么叫中二呀 @ 2019-07-10 20:53:31
我的错误代码:
```cpp
#include<cstdio>
#define ll long long
ll fac[10000]={1},inf[10000]={1},N,t,k,s=1,m=10007;
ll C(ll a,ll b){return fac[a]*inf[b]%m*inf[a-b]%m;}
ll p(ll a,ll b){return b?(b&1?a:1)*p(a*a%m,b>>1)%m:1;}
int main()
{
for(int i=1;i<10000;i++)fac[i]=fac[i-1]*i%m,inf[i]=p(fac[i],m-2)%m;
for(scanf("%lld%lld",&N,&t);scanf("%lld",&k)!=EOF;N-=k)s=s*C(N,k)%m;
printf("%lld",N<0?0:s);
return 0;
}
```
我的AC代码:
```cpp
#include<cstdio>
#define ll long long
ll fac[10005]={1},inf[10005]={1},N,t,k,s=1,m=10007;
ll C(ll a,ll b){return fac[a]*inf[b]%m*inf[a-b]%m;}
ll p(ll a,ll b){return b?(b&1?a:1)*p(a*a%m,b>>1)%m:1;}
int main()
{
for(int i=1;i<10005;i++)fac[i]=fac[i-1]*i%m,inf[i]=p(fac[i],m-2)%m;
for(scanf("%lld%lld",&N,&t);scanf("%lld",&k)!=EOF;N-=k)s=s*C(N,k)%m;
printf("%lld",N<0?0:s);
return 0;
}
```
真的是个zz错误
by 什么叫中二呀 @ 2019-07-10 20:58:37