今天zz突然想吃水果了,然后他到超市去买水果,现超市有n个不同的水果,zz要买m个水果
(m<=n);那么zz有多少种买水果的方式??
2 4 2 3 3
6 1
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
long long n,m;
long long a,b,sum;
int test;
cin>>test;
while(test--)
{
sum=1;
scanf("%lld%lld",&n,&m);
if(n-m<m)
m=n-m; //使时间复杂度降了下来C(n,m)=C(n,n-m);如果没有的话会超时
b=m;
for(long long i=n;i>n-m;i--)
{
sum=sum*i;
while(sum%b==0&&b>1) //分子下面的从m到1的连乘
{
sum=sum/b;
b--;
}
}
printf("%lld\n",sum);
}
}
原文:http://blog.csdn.net/qq_qingtian/article/details/44906449