华为2013机试题 大数相减JAVA实现
发布时间:2020-12-14 03:59:47 所属栏目:大数据 来源:网络整理
导读:题目要求大概: 输入a,b两个大数,长度100以内,默认a=b;不考虑其他情况; 例如:输入 1000000000000001 ??????????????????????1 ?????????? 输出?? 1000000000000000 import java.util.Scanner;public class Main {public static String func(String a,Str
|
题目要求大概: 输入a,b两个大数,长度100以内,默认a>=b;不考虑其他情况; 例如:输入 1000000000000001 ??????????????????????1 ?????????? 输出?? 1000000000000000 import java.util.Scanner;
public class Main {
public static String func(String a,String b) {
int[] aa = new int[a.length()];
int[] bb = new int[b.length()];
for (int i = 0; i < a.length(); i++) {
aa[i] = Integer.valueOf(String.valueOf(a.charAt(i)));
}
for (int i = 0; i < b.length(); i++) {
bb[i] = Integer.valueOf(String.valueOf(b.charAt(i)));
}
int index = b.length();
for (int i = a.length() - 1; i >= 0; i--) {
if (index >= 1) {
if (aa[i] >= bb[index - 1]) {
aa[i] = aa[i] - bb[index - 1];
} else {
int temp = 1;
while (aa[i - temp] == 0) {
aa[i - temp] = 9;
temp++;
}
aa[i - temp]--;
aa[i] = aa[i] + 10 - bb[index - 1];
}
index--;
}
}
int start = a.length()-1;
for (int i = 0; i < a.length(); i++) {
if (aa[i] != 0) {
start = i;
break;
}
}
String result = "";
for (int i = start; i < a.length(); i++) {
result += aa[i];
}
return result;
}
public static void main(String[] args) {
String a = "";
String b = "";
Scanner cin = new Scanner(System.in);
while (cin.hasNext()) {
if (a == "") {
a = cin.nextLine();
} else {
b = cin.nextLine();
System.out.println(func(a,b));
a = "";
b = "";
}
}
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
