簡單排列組合題,輸入n,m求n中選m個數的種類
#include<stdio.h>
__int64 work(__int64 n,__int64 k)
{//求在n個數中選m個數的組合數.
__int64 i,sum,j = 1;
if(k > n)
return 0;
//求組合數
for(sum = 1,i = k; i ; i--)
{
sum *= n--;
while(sum%j == 0 && j <= k)
sum /= j++;
}
return sum;
}
int main()
{
__int64 n,m;
while(scanf("%I64d%I64d",&n,&m) != EOF&& n+m)
{
if((m<<2) > n)
m = n-m;
printf("%I64d\n",work(n,m));
}
return 0;
}