问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-16 01:49

我来回答

4个回答

热心网友 时间:2023-10-08 21:17

-法很容易,直接作为字符串就好了
下面是假定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;
}
}

热心网友 时间:2023-10-08 21:17

10的1000次方?你知道这个数有多大吗?10的8次方已经1亿了,10的1000次方就是1亿的125次方,你认为你的CPU能处理这种比天文数字还天文数字的数据吗?

热心网友 时间:2023-10-08 21:17

java里有大数计算的包

热心网友 时间:2023-10-08 21:18

BigInteger
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
形容手表很舒服的句子 情侣手表的对话句子 租门面和房东鉴了十年合同,房东要退店面,我可以不退吗,继续经 ...一篇朝花夕拾里十篇小短文的主要内容及作者的情感和主要人物的... 什么叫狼狗 狼狗的生活习性有哪些? 起个姓罗好听的宝宝名字 野火的近义词 个是词语解释 请旌词语解释 一道JAVA算法题目 Java算法题:判断并输出101-200中所有素数,代码中单等号与双等号的区别? java算法题?急 请教两个java 算法题 JAVA算法题,你做的出来吗? Java算法练习题 豆腐和西红柿可以放一块吃吗? java算法题(在现等,急) 豆腐可以和百合炒番茄酱吗 离职转行怎么写求职简历 我怎么进不了QQ聊天室? 小中风的疾病发展 什么叫小中风 这样算是小中风吗?(急) 小中风能不能痊愈? 关于轻微中风,急! 小中风和中风分别是什么? 小中风和中风有什么区别 小中风后一定会发生大中风吗?林淦生定风灵效果如何? 林淦生定风灵对小中风有用吗? 小中风之后一定会发生很严重的中风吗? java算法题,帮忙解释下! java 算法题 急! java 算法题,求思路求解方法 java 一道算法题 深圳招商银行住房公积金预约电话 深圳住房公积金服务热线人工服务怎么老是说前面还有多少个人在排队,打了一个早上都是这么说的!郁闷! 罗成死的是哪一集 新 隋唐英雄里面罗成是哪一集死的!求具体集数 热带水果都上火吗? 电视剧 隋唐英雄传里,罗成是哪一集死的? 深圳市住房公积金管理中心人工热线电话怎么一直没人接听? 深圳住房公积金提取预约电话是多少 求“深圳市住房公积金管理中心”办公室电话,不是86366999,因为86366999一直无人接听。 我的情况化疗五次行吗? 什么情况下化疗四次放弃治疗,相信要是有参百益一定不会轻易放弃治疗的对吧? 新隋唐英雄传 罗成死是第几集 化疗了5次后,副作用太大,想停止可以吗 张卫健隋唐英雄 罗成第几集战死的?? 已经做了三次化疗了,以后不再做可以吗 张卫健版电视剧《隋唐英雄》罗成在哪一集死的,怎么死的?