大数

  • 大数乘法
public class BigInteger {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.next();
        String str2 = scanner.next();
        scanner.close();

        int ret[] = new int[str1.length() + str2.length()];
        //72106547548473106236 982161082972751393
        for(int i = str1.length() - 1; i >= 0; --i){
            for(int j = str2.length() - 1; j >= 0; --j){
                int num1 = str1.charAt(i) - '0';
                int num2 = str2.charAt(j) - '0';

                ret[i+j] += (ret[i+j+1] + num1 * num2)/10;//十位:就是上一次的个位 + 进位
                ret[i+j+1] = (ret[i+j+1] + num1 * num2)%10;//个位:就是个位
            }
        }

        StringBuilder builder = new StringBuilder();
        for(int i = 0; i < ret.length; ++i){
            if(i == 0 && ret[i] == 0)
                continue;
            builder.append(ret[i]);
        }
        System.out.println(builder.toString());
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大数乘法的算法 大数乘法的关键在于如何用字符串来模拟大数乘法。方法有如下几种:模拟普通的手算乘法、利用代数方法优化...
    胡哈哈哈阅读 1,998评论 0 0
  • 普通大数乘法 普通大数乘法模拟两个数字竖式相乘,为了方便操作,数字的个位在数组的第0位,时间复杂度为O ( n² ...
    Gitfan阅读 961评论 0 0
  • 1.大数储存 RSA 依赖大数运算,目前主流RSA 算法都建立在512 到1024位的大数运算之上。而大多数的编译...
    DuomiLiang阅读 2,842评论 0 0
  • 近日参加一个笔试,遇到大数乘法问题,这是一个经典的算法题。所谓大数乘法问题其实就是这样的:输入两个整数,要求输出这...
    拉普拉斯妖kk阅读 3,144评论 0 2
  • 大数相乘 假设有A和B两个大数,位数分别为a和b。根据我们平常手动计算乘法的方式可以看出,最终的结果的位数c一定小...
    SinX竟然被占用了阅读 2,508评论 0 0