当前位置:首页 > 未命名 > 正文内容

大数相乘

淙嶙7年前 (2018-07-25)未命名555
数学公式:AB X CD = AC (BC+AD) BD GitHub Logo
package com.dl.study.m1.d1;
import java.util.Scanner;
/**
 * Createdbymion2018/5/3.
 */
public class BigInteger {
    /**
     * 大数相乘基本思想,输入字符串,转成char数组,转成int数组。采用分治思想,每一位的相乘;<br>
     * 公式:AB*CD=AC(BC+AD)BD,然后从后到前满十进位(BD,(BC+AD),AC)。
     * 关键点:下标和相等的处于同一数量级【个位级,十位级,百位级。。。】。
     * @paramnum1
     * @paramnum2
     */
    public String multiply(String num1, String num2) {
        char[] c1 = num1.toCharArray();
        char[] c2 = num2.toCharArray();
        int[] result = new int[c1.length + c2.length - 1];
        int[] n1 = new int[c1.length];
        int[] n2 = new int[c2.length];
        for (int i = 0; i < c1.length; i++) {
            n1[i] = c1[i] - '0';
        }
        for (int i = 0; i < c2.length; i++) {
            n2[i] = c2[i] - '0';
        }
        for (int i = 0; i < n1.length; i++) {
            for (int j = 0; j < n2.length; j++) {
                result[i + j] += n1[i] * n2[j];
            }
        }
        for (int i = result.length - 1; i > 0; i--) {
            result[i - 1] += result[i] / 10;
            result[i] = result[i] % 10;
        }
        //输出
        StringBuilder builder = new StringBuilder(result.length);
        for (int i = 0; i < result.length; i++) {
            builder.append(String.valueOf(result[i]));
        }
        return builder.toString();
    }

    public static void main(String[] args) {
        BigInteger bm = new BigInteger();
        System.out.println("-----输入两个大数------");
        Scanner scanner = new Scanner(System.in);
        String num1 = scanner.next();
        String num2 = scanner.next();
        String result = bm.multiply(num1, num2);
        System.out.println("相乘结果为:" + result);
        scanner.close();
    }
}

相关文章

爬楼梯

爬楼梯

描述 在你面前有一个n阶的楼梯,你一步只能上1阶或2阶。请问计算出你可以采用多少种不同的方式爬完这个楼梯。 输入 一个正整数,表示这个楼梯一共有多少阶 输出 一个正整数,...

MyBatis-Generator快速入门 <一>(mysql数据源)

MyBatis-Generator快速入门 <一>(mysql数据源)

按官方文档所说,快速上手Mybatis Generator (缩写MBG),只需完成如下几部即可: 1. 花一分钟,写一个配置文件。这个配置文件必须具备以下五个xml标签。 a.一个<jdbcC...

设计模式是什么鬼

设计模式是什么鬼

设计模式是什么鬼?“世界处处不设计”有物混成,先天地生。寂兮寥兮,独立而不改,周行而不殆,可以为天地母。吾不知其名,字之曰道,强为之名曰大。大曰逝,逝曰远,远曰反。道是什么?道可道,非常道。道不明,说...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。