大数运算及排列组合
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 3 大数乘法
大数乘法运算实现算法如下: (1)通过每一层循环 ,实现乘法的加法化; (2)对结果做进位调整。 思路:乘法比加法稍微复杂一些,进位多, 先计算后统一处理进位的方法比较好.
总结:大数乘法是二重循环,先乘,后统 一进位.
2. 4 大数除法
解题思路 基本的思想是反复做减法,看看从被除数里最多能 减去多少个除数,商就是多少。一个一个减显然太慢, 如何减得更快一些呢? 以 7546 除以 23 为例来看一下:开始商为 0。先 减去 23 的 100 倍,就是 2300,发现够减 3 次,余下 646。于是商的值就增加 300。然后用 646减去 230, 发现够减 2 次,余下 186,于是商的值增加 20。最后 用 186 减去 23,够减 8 次,因此最终商就是 328。 所以本题的核心是要写一个大整数的减法函数,然 后反复调用该函数进行减法操作。 计算除数的 10 倍、100 倍的时候,不用做乘法,直接 在除数后面补 0 即可。
大整数运算
由于编程语言提供的基本数值数据类型表 示的数值范围有限,不能满足较大规模的 高精度数值计算,因此需要利用其他方法 实现高精度数值的计算,于是产生了大数 运算。
思路: 但凡大数运算思路一致,都是 用数组存,然后处理进位
1.大数存储的实现
作为实现大数存储最常见的一类方法是利 用数组。将一 个有 n 位的大数存入数组 , 每个数组的一个元素表示一位十 进制数 ,若 是 n 没有超过普通 PC 机允许的定义范围 , 这种算 法是简单易行的。 如果出现超大数 , 则可以采用万进制的方法加以存储 ,在 此就 不多做介绍了。
2.大数计算的算法
2. 1 大数加法 大数加法运算实现算法如下: (1)将数组A、 B 按位对齐; (数组一般都是先从低位开始存放) (2)低位开始逐位相加; (3)对结果做进位调整。
2. 2 大数减法
大数减法运算实现算法如下: (1)将 A、 B 按位对齐; (2)低位开始逐位相减; (3)对结果做借位调整。
Байду номын сангаас
基本公式整理
只要记住下面公式,就会计算排列组合:(在列式中n为下标,m为上标) 排列 A(n,m)=n(n-1)(n-2)……(n-m+1)=n!/(n-m)! 组合 C(n,m)=A(n,m)/A(m,m)=A(n,m)/m! C(n,m)=C(n,n-m)=n!/m!(n,m)! 例如 A(4,2)=4!/2!=4x3=12 C(4,2)=4!/(2!x2!)=(4x3x2)/(2x2)=6
排列用符号A(n,m)表示,m≦n。 计算公式是:A(n,m)=n(n-1)(n-2)……(n-m+1)=n!/(n-m)! 此外规定0!=1,n!表示n(n-1)(n-2)…1
组合的定义及其计算公式
组合的定义有两种。定义的前提条件是m≦n。 ① 从n个不同元素中,任取m个元素并成一组,叫做从n个不同元素中取出m 个元素的一个组合。 ② 从n个不同元素中,取出m个元素的所有组合的个数,叫做从n个不同元素 中取出m个元素的组合数。 ③ 用例子来理解定义:从4种颜色中,取出2种颜色,能形成多少种组合。 组合用符号C(n,m)表示,m≦n。 公式是:C(n,m)=A(n,m)/m! 或 C(n,m)=C(n,n-m)。
2. 5 大数取模
在取模运算中用到了上面的除法运算 ,只需 返回余数即可。
排列组合
排列的定义及其计算公式
排列有两种定义,但计算方法只有一种,凡是符合这两种定义的都用这种方法计算。 定义的前提条件是m≦n,m与n均为自然数。 ① 从n个不同元素中,任取m个元素按照一定的顺序排成一列,叫做从n个不同元 素中取出m个元素的一个排列。 ② 从n个不同元素中,取出m个元素的所有排列的个数,叫做从n个不同元素中取 出m个元素的排列数。 ③ 用具体的例子来理解上面的定义:4种颜色按不同颜色,进行排列,有多少种排 列方法,如果是6种颜色呢。从6种颜色中取出4种进行排列呢。