取物品

来源:互联网 发布:淘宝高达 编辑:程序博客网 时间:2024/04/29 00:46
【题目描述】

现在有n个物品(有可能相同),请您编程计算从中取k个有多少种不同的取法。

【输入描述】

输入文件有两行,第一行包含两个整数n,k(2<=n<=30,0<=k<=n)。第二行,包含n个整数表示物品的编号(范围1..1000)。编号相同的物品看作同一种物品。

【输出描述】

输出仅一个整数,即方案数。

【样例输入】

5 2

1 2 3 4 5

【样例输出】

10

源代码:#include<cstdio>int m,n,k,num,t1=1,t2=1,ans=1;bool f[31]={0};int main(){    scanf("%d%d",&n,&k); //读入总个数、选择数。    num=n; //真实可选总数。    for (int a=1;a<=n;a++)    {        int t;        scanf("%d",&t);        if (f[t]) //去重。          num--;        else          f[t]=true;    }    for (int a=2;a<=num;a++)     {        ans*=a;        if (a==num-k)          t1=ans;        if (a==k)          t2=ans;    }    printf("%d",ans/(t1*t2)); //C[m,n]=n!/[m!(n-m)!]。    return 0;}
0 0
原创粉丝点击