求组合数的题,利用组合数公式kCn=(n-k)Cn化简
然后利用log法求值就行了
TLE的注意下下面几组数据
200000 200000
200000 199999
200000 1
就OK了
#include <stdio.h>
#include <math.h>
int main()
{
int n,k,i;
double sum;
while(scanf("%d %d",&n,&k) && n)
{
sum=0;
if(k>(n/2))
{
k=n-k;
}
for(i=k>n-k?k+1:n-k+1;i<=n;++i)
{
sum+=log((double)i);
}
for(i=k>n-k?n-k:k;i>1;--i)
{
sum-=log((double)i);
}
printf("%.0f\n",exp(sum));
}
}