java大数相乘算法 ゝ一世哀愁。 2022-07-16 02:14 198阅读 0赞 public class MyMultiply { /** * @param args */ public static void main(String[] args) { // System.out.println("Hello world"); //String str1 = "1234"; //String str2 = "1234"; //String str1 = "1076060999"; //String str2 = "90188905567"; String str1 = "23456789009877666555544444"; String str2 = "346587436598437594375943875943875"; int len1 = str1.length(); int len2 = str2.length(); char[] s1 = str1.toCharArray(); char[] s2 = str2.toCharArray(); // 高低位对调 covertdata(s1, len1); covertdata(s2, len2); System.out.println("乘数:"+str1); System.out.println("乘数:"+str2); multiply(s1, len1, s2, len2); } public static void covertdata(char data[], int len) { //高低位对调 for (int i = 0; i < len / 2; i++) { data[i] += data[len - 1 - i]; data[len - 1 - i] = (char) (data[i] - data[len - 1 - i]); data[i] = (char) (data[i] - data[len - 1 - i]); } } public static void multiply(char a[], int alen, char b[], int blen) { // 两数乘积位数不会超过乘数位数和+ 3位 int csize = alen + blen + 3; // 开辟乘积数组 int[] c = new int[csize]; // 乘积数组填充0 for (int ii = 0; ii < csize; ii++) { c[ii] = 0; } // 对齐逐位相乘 for (int j = 0; j < blen; j++) { for (int i = 0; i < alen; i++) { c[i + j] += Integer.parseInt(String.valueOf(a[i]))* Integer.parseInt(String.valueOf(b[j])); } } int m = 0; // 进位处理 for (m = 0; m < csize; m++) { int carry = c[m] / 10; c[m] = c[m] % 10; if (carry > 0) c[m + 1] += carry; } // 找到最高位 for (m = csize - 1; m >= 0;) { if (c[m] > 0) break; m--; } // 由最高位开始打印乘积 System.out.print("乘积:"); for (int n = 0; n <= m; n++) { System.out.print(c[m - n]); } System.out.println(""); } }
相关 大数相乘 一、背景 最近在看算法的时候发现了一个问题,我们都知道方法的形参是要指定类型的,假如有以下方法 public int example(int a,int b){ 傷城~/ 2022年09月30日 13:55/ 0 赞/ 219 阅读
相关 大数相乘 参考地址:[http://www.cnblogs.com/heyonggang/p/3599857.html][http_www.cnblogs.com_heyonggang_ 悠悠/ 2022年08月20日 06:29/ 0 赞/ 197 阅读
相关 大数相乘 [用分治法实现大数乘法,加法,减法(java实现)][java] 大数乘法即多项式乘法问题,求A(x)与B(x)的乘积C(x),朴素解法的复杂度O 小咪咪/ 2022年08月19日 15:12/ 0 赞/ 194 阅读
相关 大数相乘 无意中看到一个华为面试题,使用代码计算[1234567891011121314151617181920\2019181716151413121110987654321][123 系统管理员/ 2022年08月11日 20:29/ 0 赞/ 204 阅读
相关 大数相乘 题目:请使用代码计算1234567891011121314151617181920\2019181716151413121110987654321。 答: ![复制代码][ Bertha 。/ 2022年08月05日 08:54/ 0 赞/ 212 阅读
相关 java大数相乘算法 public class MyMultiply { / @param args / public static ゝ一世哀愁。/ 2022年07月16日 02:14/ 0 赞/ 199 阅读
相关 大数相乘 在这之前我们先来了解一下Java 中每种基本数据类型所占存储空间的大小。其中 1Byte = 8bit。 <table> <tbody> <tr> <th> 朱雀/ 2022年06月02日 02:36/ 0 赞/ 264 阅读
相关 大数相乘 设X和Y是n位的二进制整数,现在要计算X\Y的结果 将a和b分为两段,每段长均为总长的1/2, ![20180329214901958][] 拼搏现实的明天。/ 2022年05月28日 05:06/ 0 赞/ 223 阅读
相关 大数相乘 题目 编写两个任意位数的大数相乘的程序,给出计算结果。比如: > 题目描述: 输出两个不超过100位的大整数的乘积。 > 输入: 输入两个大整数,如1234567 今天药忘吃喽~/ 2022年05月23日 11:23/ 0 赞/ 345 阅读
相关 大数相乘 def fun(num1,num2): num1 type str num2 type str a = map(int, 落日映苍穹つ/ 2021年10月24日 01:48/ 0 赞/ 341 阅读
还没有评论,来说两句吧...