剑指offer——大数相乘问题(BigInteger的大致实现思路)
来源:互联网 发布:腾讯什么游戏优化 编辑:程序博客网 时间:2024/05/16 23:53
乘法运算可以分拆为两步:第一步,是将乘数与被乘数逐位相乘;第二步,将逐位相乘得到的结果,对应相加起来。
具体原理看图:http://blog.csdn.net/sunkun2013/article/details/11822927
public class BigInt { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.next(); String str2 = sc.next(); int[] num1 = new int[str1.length()]; int[] num2 = new int[str2.length()]; //把字符串转换成int数组 for (int i = 0; i < str1.length(); i++) { num1[str1.length() - 1 - i] = str1.charAt(i) - '0'; } for (int i = 0; i < str2.length(); i++) { num2[str2.length() - 1 - i] = str2.charAt(i) - '0'; } int[] result = multiply(num1, num2); // 因为前面做了倒序操作,所以最高位在最后 for (int i = result.length - 1; i >= 0; i--) { if(i==result.length - 1) if(result[i]==0) continue; System.out.print(result[i]); } sc.close(); } public static int[] multiply(int[] num1, int[] num2) { int lengthOfNum1 = num1.length; int lengthOfNum2 = num2.length; //如果num1和num2的长度分别为n1,n2,那么它们相乘的结果位数最大为n1+n2 int[] result = new int[lengthOfNum1 + lengthOfNum2]; //num[i]*num2[j]的结果存在result[i+j]上,最后再处理进制问题 for (int i = 0; i < lengthOfNum1; i++) { for (int j = 0; j < lengthOfNum2; j++) { result[i + j] += num1[i] * num2[j]; } } // 处理进制问题 for (int i = 0; i < lengthOfNum1 + lengthOfNum2 - 1; i++) { if (result[i] >= 10) { result[i + 1] += result[i] / 10; result[i] = result[i] % 10; } } return result; } }
阅读全文
0 0
- 剑指offer——大数相乘问题(BigInteger的大致实现思路)
- 大数相乘问题(Java实现)
- 关于大数相乘问题(Java实现)
- 大数相乘的实现
- 大数相乘的算法实现(C#)
- 大数相乘--极简单的思路
- 算法理解——大数相乘问题
- C++实现——两个大数相乘
- 棋盘上的麦子(BigInteger处理大数问题)
- 大数相乘的C++实现
- 大数问题——java中的BigInteger类
- 支付功能实现的大致思路
- android断点续传下载实现的大致思路
- 大数运算(四)——大数相乘
- 两个大数相乘的问题(只限制是正整数)
- Java高新技术——大数操作(BigInteger、BigDecimal)
- 1005 大数加法 ——51Nod(java BigInteger)
- 大数相乘的一种思路(2012年软件设计大赛的启思)
- 技术人员绩效考核
- AngularJS入门-(7)控制器
- 微信小程序设置缓存,及取值
- Light OJ-1082 Array Queries(线段树最值查询)
- Python非官方安装包
- 剑指offer——大数相乘问题(BigInteger的大致实现思路)
- java线程池
- [转载]锤子官网的 banner 的 3D 悬浮效果
- 传智播客-Java学习笔记day13
- 关于textview中表示文字段落时,特定区域显示高亮颜色和点击事件的方法
- Oracle 11g数据库详细安装步骤图解,附带安装包
- Android Studio的使用
- [算法与数据结构]
- 在Service创建子线程的好处