博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA高精度乘法模板(大数乘以一个小数)
阅读量:538 次
发布时间:2019-03-07

本文共 781 字,大约阅读时间需要 2 分钟。

1.思路

高精度乘法是大数乘以一个int型的小数,和前面模拟不同,这里不是一位一位的乘,而是a一位乘以整个数b,当a乘到最高位且没有进位就结束了。

2.代码模板

方法一://a为大数,倒序存储,b为int型,返回a*b的结果public static List
multiply(List
a, int b) {
int t = 0; //保存进位 List
c = new ArrayList<>(); //保存答案 for(int i = 0; i < a.size(); i++) {
t += a.get(i) * b; //用a的一位乘以b加上之前的进位 c.add(t % 10); //保存当前位计算的结果 t /= 10; //前面保存了一位,所以要开始对下一位计算存储 } while(t != 0) {
//如果进位还没用完 c.add(t % 10); t /= 10; } while(c.size() > 1 && c.get(c.size() - 1) == 0) //去掉前导0,实际上只有b为0时才有前导0 c.remove(c.size() - 1); return c;} 方法二://Java大数BigInteger a = new BigInteger(s[0]);BigInteger b = new BigInteger(s[1]);BigInteger c = a.multiply(b);

3.复杂度分析

  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

转载地址:http://hxynz.baihongyu.com/

你可能感兴趣的文章