心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
以下是我的代码:
#include<stdio.h>
const long maxn=17;
long d[maxn][maxn];
void init()
{
    
for(long i=0;i<maxn;i++)
      d[i][
0]=d[i][i]=1;
    
for(long i=2;i<maxn;i++)
      
for(long j=1;j<i;j++)
        d[i][j]
=d[i-1][j]+d[i-1][j-1];
}
long C(long n,long k)
{
    
return d[n][k];
}
int main()
{
    
/*
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
    //
*/
    
long n,k,ans,a[maxn];
    init();
    
while(scanf("%ld%ld",&n,&k)==2)
    {
       
for(long i=1;i<=k;i++) scanf("%ld",&a[i]);
       ans
=1;
       
for(long i=1;i<=k;i++)
       {
          ans
*=C(n,a[i]);
          n
-=a[i];
       }
       printf(
"%ld\n",ans);
    }
return 0;
}


posted on 2010-02-09 22:00 lee1r 阅读(340) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:数学/数论

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理