今天zz突然想吃水果了,然后他到超市去买水果,现超市有n个不同的水果,zz要买m个水果
(m<=n);那么zz有多少种买水果的方式??
2 4 2 3 3
6 1
思路:之前比赛的时候写的超时是,一次在网上看过组合数,我不知道为什么是这样的,背着吧。。。for循环那个大括号包含while,在外面。昨天提交因为不是这就错了。要用long long ,int 有符号是2的31次方减1,不只是无符号的能不能编译成功,好像__int64不能编译成功在南阳理工oj上
#include<iostream>
#include<stdio.h>
using namespace std;
long long zuheshu(long long n, long long r)
{ long long i;
long long s=1;
long long j=1;
if(n-r<r)
r=n-r;
for(i=0;i<r;i++)
{ s*=(n-i);
while(j<=r &&s%j==0</span>)
{
s=s/j;
j++;
}
}
return s;
}
int main()
{
int T;
long long n,r;
cin>>T;
while(T--)
{
scanf("%lld%lld",&n,&r);
printf("%lld\n",zuheshu(n,r));
}
return 0;
}
原文:http://blog.csdn.net/zuguodexiaoguoabc/article/details/44887679