AcWing 792. 高精度减法
原题链接
简单
作者:
将情怀讲泛滥的恶果
,
2021-05-18 15:53:38
,
所有人可见
,
阅读 224
java
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(in);
String a = br.readLine();
String b = br.readLine();
ArrayList<Character> A = new ArrayList<Character>();
ArrayList<Character> B = new ArrayList<Character>();
for (int i = a.length() - 1; i >= 0; i--) {
A.add(a.charAt(i));
}
for (int i = b.length() - 1; i >= 0; i--) {
B.add(b.charAt(i));
}
if (compare(A, B)) {
ArrayList<Character> c = SUB(A, B);
for (int i = c.size() - 1; i >= 0; i--) {
System.out.print(c.get(i));
}
} else {
ArrayList<Character> c = SUB(B, A);
System.out.print("-");
for (int i = c.size() - 1; i >= 0; i--) {
System.out.print(c.get(i));
}
}
}
public static boolean compare(ArrayList<Character> a, ArrayList<Character> b) {
if (a.size() != b.size()) return a.size() > b.size();
else {
for (int i = a.size() - 1; i >= 0; i--) {
if (a.get(i) != b.get(i)) {
return a.get(i) > b.get(i);
}
}
return true;
}
}
public static ArrayList<Character> SUB(ArrayList<Character> a, ArrayList<Character> b) {
ArrayList<Character> c = new ArrayList<>();
int t = 0;
int i = 0;
while (i < a.size()) {
t += (a.get(i) - '0');
if (i < b.size()) t -= (b.get(i) - '0');
if (t >= 0) {
c.add((char) (t + '0'));
t = 0;
} else {
c.add((char) (10 + t + '0'));
t = -1;
}
i += 1;
}
int j = c.size() - 1;
while (j >= 1) {
if (c.get(j).equals('0')) {
c.remove(j);
j -= 1;
} else {
break;
}
}
return c;
}
}