您的位置:首页 > 其它

大数相减

2016-04-26 16:43 507 查看
题目:

长度小于100 的两个数,默认第一个数比第二个数大,求差

代码如下:

package BigNumberSubtraction;

import java.util.Scanner;

public class BigNumberSubtraction {

public String subMethod(String a, String b) {
int aa[] = new int[a.length()];
int bb[] = new int[b.length()];
String result = "";
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() - 1;
for(int i=a.length()-1;i >= 0;i--) {
if(index >= 0) {
if(aa[i] >= bb[index])
aa[i] = aa[i] - bb[index];
else{
int temp=1;
while(aa[i-temp] == 0) {
aa[i-temp] = 9;
temp++;
}
aa[i-temp]--;
aa[i] = aa[i] + 10 - bb[index];
}
index--;
}
}
int start = 0;
for(int i = 0;i<aa.length;i++) {
if(aa[i]!=0) {
start = i;
break;
}
}
for(int i=start;i<aa.length;i++)
result += aa[i];
return result;
}

public static void main(String[] args) {
//直接式
// String a = "200000000000000000002"; //默认第一个数比第二个数大
// String b = "100000000000000100001";
// System.out.println(new BigNumberSubtraction().subMethod(a,b));
//输入式
String a = "";
String b = "";
Scanner cin = new Scanner(System.in);
while(cin.hasNext()) {
if(a.equals("")) {
a = cin.nextLine();
} else {
b = cin.nextLine();
System.out.println(new BigNumberSubtraction().subMethod(a,b));
a = "";
b = "";
}
}
}
}

200000000000000000002  输入

100000000000000100001  输入

99999999999999900001    输出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: