高进度加法
在Java中可以使用BigInteger进行高精度计算,除此也可以仿照竖式相加的计算原理进行计算。
BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作.
核心思想:
将两个数转为字符数组,都倒序后,进行对应位相乘,将有进位的值加到下次计算中。
算法实现:
import java.util.Scanner;
public class GJD_addition {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[] a = scanner.next().toCharArray();
char[] b = scanner.next().toCharArray();
int la = a.length;
int lb = b.length;
int lc = Math.max(la,lb)+1;
int[] c = new int[lc];
//将两个数组转置,并将元素转为数字
int[] s1 = new int[lc];
int[] s2 = new int[lc];
for (int i = 0; i < la; i++) {
s1[la-i-1] = a[i]-'0';
}
for (int i = 0; i < lb; i++) {
s2[lb-i-1] = b[i]-'0';
}
//进行加法
for (int i = 0; i < lc-1; i++) {
c[i] += s1[i]+s2[i];
c[i+1] = c[i]/10;
c[i] = c[i]%10;
}
if (c[lc-1]==0){
lc--;
}
for (int i =lc-1; i >=0; i--) {
System.out.print(c[i]);
}
}
}
相关力扣题:
2. 两数相加
LCR 025. 两数相加 II
和
445. 两数相加 II
67. 二进制求和
高精度减法
高精度乘法
高精度除法
(持续更新中~)