double
创新互联建站是一家专业提供阿里地区企业网站建设,专注与网站建设、做网站、HTML5、小程序制作等业务。10年已为阿里地区众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
lnchoose(int
n,
int
m)
{
if
(m
n)
{
return
0;
}
if
(m
n/2.0)
{
m
=
n-m;
}
double
s1
=
0;
for
(int
i=m+1;
i=n;
i++)
{
s1
+=
log((double)i);
}
double
s2
=
0;
int
ub
=
n-m;
for
(int
i=2;
i=ub;
i++)
{
s2
+=
log((double)i);
}
return
s1-s2;
}
double
choose(int
n,
int
m)
{
if
(m
n)
{
return
0;
}
return
exp(lnchoose(n,
m));
}
用之前调用math.h头文件,用的话直接把值赋给choose()这个函数即可,直接调用上面的函数,返回一个double数值,可追问
#includeiostream
using namespace std;double jiecheng(int n)
{
if(n==0)
return 0;
if(n==1)
return 1;
double m=n;
while(!(n2))
{
m=m*(n-1);
n--;
}
return m;
}main()
{
int n,r;
double zuheshu;
printf("请输入n和r(n1且r=n):\n");
scanf("%d%d",n,r);
printf("组合数=%f",zuheshu=(jiecheng(n)/(jiecheng(r)*jiecheng(n-r))));
} 这是在VC++环境中编的,如果在tuboC中运行,只需将头文件更改下就可以了
组合数C(n,m)的计算公式为:
例题:
扩展资料:
C(n,m),表示的是从 n 个不同元素中每次取出 m 个不同元素 ,不管其顺序合成一组,称为从 n 个元素中不重复地选取 m 个元素的一个组合。
参考资料:百度百科_组合数
double fact(long num)
{
for (long i = 1; num 0; num--)
{
i *= num;
}
}
int main()
{
long m;
long n;
long C;
scanf("%ld %ld", m, n);
C = fact(n) / ((fact(m)) * fact(n-m));
printf("%ld",C);
return 0;
}