美文网首页
大数相乘

大数相乘

作者: Haward_ | 来源:发表于2019-10-17 10:58 被阅读0次
import java.util.Scanner;
/***
 *  大数相乘
 */
public class Main {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String s1 = sc.next();
    String s2 = sc.next();
    int[] arr1 = new int[s1.length()];
    int[] arr2 = new int[s2.length()];
    for(int i=0;i<arr1.length;i++) {
      arr1[i] = s1.charAt(i)-'0';
    }
    for(int i=0;i<arr2.length;i++) {
      arr2[i] = s2.charAt(i)-'0';
    }
    System.out.println(bigMul(arr1,arr2));
  }

  private static String bigMul(int[] arr1,int[] arr2) {
    // 索引i+j的最大值为arr1.length-1 + arr2.length-1 ;所以定义长度长度如下:
    int[] res = new int[arr1.length+arr2.length-1];
    /***
     * 假设是123*45:
     * res[0] 表示100*40(最高位)(两个数从左到右算起,第0位,即i+j=0+0)
     * res[1] 表示i+j=0+1或者1+0的结果,对应100*5+20*40的结果(次高位)
     * 。。。
     */
    for(int i=0;i<arr1.length;i++) {
      for(int j=0;j<arr2.length;j++) {
        res[i+j]+=arr1[i]*arr2[j];
      }
    }
    // 从右往左算,即最低位到最高位进位
    int bit = 0;
    for(int i=res.length-1;i>0;i--) {
      int temp = res[i];
      res[i]=(temp+bit)%10;
      bit = (temp+bit)/10;
    }
    String str = "";
    for(int i=0;i<res.length;i++) {
      str += res[i];
    }
    if(bit!=0) {
      return bit+str;
    }else {
      return str;
    }
  }
}




相关文章

  • 大数相乘--golang简单实现

    大数乘法之golang实现所谓大数相乘(Multiplication algorithm),就是指数字比较大,相乘...

  • 大数相乘

    所谓大数相乘(Multiplication algorithm),就是指数字比较大,相乘的结果超出了基本类型的表示...

  • 大数相乘

  • 大数相乘

    两个大数相乘,这两个大数分别是a和b,现在分割成两部分,每一部分都是N位,假设是10进制的,其实对于2进制也同样适...

  • 大数相乘

  • 大数相乘

    别忘了把字符串反转便于求导,还有去除前面的0的时候别忘了结果本来就为0的情况,两个数相乘最长长度为len1+len2。

  • 大数相乘

    给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示...

  • 小算法集锦 : 20行代码实现大数相乘

    1.大数相乘 1.1 js 版本 (不计算注释只需要20行) 1.2 C语言 大数相乘 无依赖 简单的 js 转...

  • 大数相乘算法

    1、计算两个大数相乘的结果。2、算法流程:(1)大数可能超出任何一种整数类型,会引发溢出问题,所以用字符串的格式存...

  • 大数相乘-算法

    参考文章 题目 思路 例如:计算98×21,步骤如下 Objective-C 版 swift 版 待更新

网友评论

      本文标题:大数相乘

      本文链接:https://www.haomeiwen.com/subject/emrwnqtx.html