如何用c语言计算10!/11!?

如题所述

1、利用排列数公式:C10(2)=A10(2)/2!=45

2、利用组合数公式:C10(2)=10!/(8!)(2!)=45

计算方法如下:

排列A(n,m)=n×(n-1).(n-m+1)=n!/(n-m)!(n为下标,m为上标,以下同)

组合C(n,m)=P(n,m)/P(m,m) =n!/m!(n-m)!;

例如A(4,2)=4!/2!=4*3=12

C(4,2)=4!/(2!*2!)=4*3/(2*1)=6

扩展资料

互补性质

即从n个不同元素中取出m个元素的组合数=从n个不同元素中取出 (n-m) 个元素的组合数;

这个性质很容易理解,例如C(9,2)=C(9,7),即从9个元素里选择2个元素的方法与从9个元素里选择7个元素的方法是相等的。

规定:C(n,0)=1 C(n,n)=1 C(0,0)=1

组合恒等式

若表示在 n 个物品中选取 m 个物品,则如存在下述公式:C(n,m)=C(n,n-m)=C(n-1,m-1)+C(n-1,m)。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2024-01-11
在C语言中,计算阶乘通常涉及到一个循环来连乘一系列的整数。然而,在这个特定的例子中,我们不需要计算完整的阶乘,因为10!和11!之间有一个很简单的关系。11!(11的阶乘)实际上等于10!(10的阶乘)乘以11。
所以,10!/11!可以简化为:
10! / 11! = 1 / 11
因此,10!除以11!的结果就是1除以11,或者约等于0.0909090909。
如果需要在C语言中编码计算这个结果,你可以简单地做一个除法运算:
```c
#include <stdio.h>
int main() {
double result = 1.0 / 11.0;
printf("10!/11! = %f\n", result);
return 0;
}
```
在这段代码中,我们使用了 `double` 类型的变量来存储结果,以保持较高的精度。然后,我们打印出结果,输出大约为0.090909。没有必要计算完整的阶乘,因为我们知道这两个数之间的关系可以简化计算。
相似回答