大数相减
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 输出
长度小于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 输出
相关文章推荐
- CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables
- 可以改善mysql性能的InnoDB配置参数
- 代理模式与动态代理
- Easyui, 向表单中动态append一个input元素后,表单验证不生效【已解决】
- Java线程唤醒与阻塞
- C#委托和事件详解
- HTML——1(HTML 5 文件的基本语法)
- Android SDK目录结构及作用
- CodeForces 450B 矩阵
- 高性能MySQL笔记 第6章 查询性能优化
- PYTHON--欧拉习题一
- Webdriver(selenium2.0)+NUnit+C# (二)
- MyBatis和Hibernate相比
- Java 集合系列02之 Collection架构
- 线段树模板
- 单例设计模式
- BZOJ1178: [Apio2009]CONVENTION会议中心
- 第十三条:使类和成员的可访问性最小化
- Android图片的三级缓存机制之从网络中获取图片
- AngularJS基础