大数相乘
来源:互联网 发布:c语言入门知识 编辑:程序博客网 时间:2024/06/09 23:53
一、找规律
首先观察手工两数相乘的规律:如765*98,手工过程如下表所示
下标
4
3
2
1
0
A(i)
7
6
5
B(j)
9
8
中间过程
6
(56+5)1
(48+4)2
(40)0
6
(63+5)8
(54+4)8
(45)5
result
7
4
9
7
0
由上表过程可得出如下规律:
(1)两数相乘的最终结果的位数不超过两数的位数之和,取极端例子99*999=98901;
(2)A中第i位与B中第j位相乘的结果放在第i+j位中,其中i,j都是从后往前数;
(3)第i个数上的进位加到第i+1个数上;
二、实现步骤
1、合法性:判断A、B字符串首字符是否含有符号位“+”和“-”,若含有,从第二个字符开始计算;
2、翻转:将A、B字符串翻转并转换成数组;
3、构造结果集:构造结果数组result,大小为A、B除去符号位长度之和;
4、计算:遍历A,B数组,A中第i位与B中第j位相乘的结果放在结果集的第i+j位中;
5、进位:遍历结果集,如果结果集的数大于等于10,进行进位,进位规则为第i个数上的进位加到第i+1个数上;
6、过滤:若结果集中有前置0,则需要删除前置0。如果有负符号位加上符号位。
三、代码实现
阅读全文
0 0
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- Android Scroll详解(二):OverScroller实战 + ListView 的 OverScrollBy 两个参数的解析
- 图片转换,字符串,字符串转换图片
- POJ1321——棋盘问题
- Mac OS Launchpad设置排列
- 微信小程序--长按事件bindlongtap与点击事件bindtap的冲突
- 大数相乘
- 相关性学习-皮尔逊相关系数2
- 发布项目到jcenter
- android学习参考
- JXLS模板导出excel--简单版
- 把spring-boot项目部署到tomcat容器中
- ELL解决:libstdc++.so.6: version `CXXABI_1.3.9' not found (required by bin/opencv_test_core)?
- Eclipse添加Spket插件实现ExtJs智能提示
- JAVA语言与C++相比优劣势分析