您的位置:首页 > 编程语言 > Java开发

华为2013机试题 大数相减JAVA实现

2013-09-14 16:29 274 查看
题目要求大概:

输入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 = "";
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: