java算法题,有会算的帮小弟解决下

在控制台传入俩个数,用第一个数减去第二个数得到结果并打印出来。要求第一个数要比第二个数大,(这个很简单吧),还一个要求就是这两个传进去的数要于10的1000次方减去1进行... 在控制台传入俩个数,用第一个数减去第二个数得到结果并打印出来。要求第一个数要比第二个数大,(这个很简单吧),还一个要求就是这两个传进去的数要 于10的1000次方减去1 进行比较。(也就是JAVA的基本数据类型不能直接使用因为他们没有10的1000次方-1的那个数大),这里面难就难再传进去的数值怎么和那个大数进行比较!(math:pow(10, 1000).的问题) 展开
 我来答
shiva1981
2010-07-18 · TA获得超过773个赞
知道小有建树答主
回答量:638
采纳率:0%
帮助的人:771万
展开全部
-法很容易,直接作为字符串就好了
下面是假定number1比较大,不确定的话前面加个判断就好了
没有上机验证过,大体不会有错

public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
StringBuffer sb = new StringBuffer();
sb.append("1");
for (int i=0;i<100;i++){
sb.append("0000000000");
}

String bigNum = sb.toString();

String num1 = scanner.next(Pattern.compile("\\d+"));
String num2 = scanner.next(Pattern.compile("\\d+"));
num1 = num1.replaceFirst("^0*", "");
num2 = num2.replaceFirst("^0*", "");

if (compare(num1, num2)<0){
System.out.println("num1<num2");
String tmp = num1;
num1 = num2;
num2 = tmp;
}
switch (compare(num1, bigNum)){
case 1:
System.out.println("num1>1.0E1000");
break;
case -1:
System.out.println("num1<1.0E1000");
break;
default:
System.out.println("num1=1.0E1000");
}

switch (compare(num2, bigNum)){
case 1:
System.out.println("num2>1.0E1000");
break;
case -1:
System.out.println("num2<1.0E1000");
break;
default:
System.out.println("num2=1.0E1000");
}

char[] c1 = num1.toCharArray();
char[] c2 = num2.toCharArray();
int len1 = c1.length;
int len2 = c2.length;
for (int i=len1-1, j=len2-1;i>=0 && j>=0;i--,j--){
if (c1[i] >= c2[j])
c1[i] = (char)(c1[i] - c2[j] + '0');
else{
c1[i] = (char)(c1[i] + 10 - c2[j] + '0');
for (int k=i-1;k>=0;k++){
if (c1[k]>'0') {
c1[k] = (char)(c1[k] - 1);
break;
}
}
}

}
System.out.println(num1 + "-" + num2 + "=" + new String(c1));
}

public static int compare(String num1, String num2){
System.out.println(num1.length() + "," + num2.length());
if (num1.length()<num2.length()){
return -1;
}else if (num1.length()==num2.length()){
return num1.compareTo(num2);
}else{
return 1;
}
}
uniqueleon
2010-07-18 · TA获得超过183个赞
知道答主
回答量:20
采纳率:0%
帮助的人:24万
展开全部
10的1000次方?你知道这个数有多大吗?10的8次方已经1亿了,10的1000次方就是1亿的125次方,你认为你的CPU能处理这种比天文数字还天文数字的数据吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuliao9891
2010-07-18 · 超过17用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:0
展开全部
java里有大数计算的包
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光盐l5
2010-07-17 · TA获得超过991个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:196万
展开全部
BigInteger
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式