- 浏览: 3505913 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
A + B Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 197537 Accepted Submission(s): 59076 Problem Description Calculate A + B. Input Each line will contain two integers A and B. Process to end of file. Output For each case, output A + B in one line. Sample Input 1 1 Sample Output 2 Author HDOJ
分析:这个题目我是这样想的,模拟人的做法,用到了栈的。解答的思路在代码中有标示
(JAVA 中有超大数的类可以实现)
import java.math.BigDecimal;
import java.util.Scanner; public class Main { public static void main(String[] args) { String num1, num2; BigDecimal big1, big2; Scanner in = new Scanner(System.in); while (in.hasNextInt()) { num1 = in.next(); num2 = in.next(); big1 = new BigDecimal(num1); big2 = new BigDecimal(num2); System.out.println(big1.add(big2)); } } }
先留着
package endual.answer; import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); String a, b; a = cin.next(); b = cin.next(); char f1 = a.charAt(0) ; //保存a的符号 char f2 = b.charAt(0) ; //保存b的符号 int fSum = 0 ; if (f1 == '-') { a = a.substring(1) ; fSum++ ; } if (f2 == '-') { b = b.substring(1) ; fSum++ ; } int aLen = a.length() ; int bLen = b.length() ; if (aLen < bLen) { //保证a的长度要大于b的长度 String tempBtoA = a ; a = b ; b = tempBtoA ; char tempF = f1 ; //同样交换他们的符号 f1 = f2 ; f2 = tempF ; } //保证a的长度要大于等于b的长度 //如果是同号的 if(fSum != 1) { String res = jia(a,b) ; if(fSum == 2) { res = "-" + res ; } System.out.println(res) ; return ; } //如果是不同号的 String tempa = a ; String tempb = b ; //如果是相等的 那么返回0 if(a.equals(b)) { System.out.println(0) ; return ; } String c ; boolean isBigger = getWhoIsGiger(tempa,tempb) ; //返回a和b那个大了 System.out.println(isBigger) ; if (!isBigger) { //b 大 c = jian(b,a) ; if(f2 == '-') { c = "-" + c ; } } else { //a大 c = jianab(a,b) ; if(f1 == '-') { c = "-" + c ; } } System.out.println(c) ; } //end main private static String jianab(String a, String b) { Stack stacka = new Stack(); Stack stackb = new Stack(); String ab = a; while (ab.length() != 0) { char c = ab.charAt(0); String subab = ab.substring(1); stacka.push(c) ; ab = subab ; } String abc = b; while (abc.length() != 0) { char c = abc.charAt(0); String subabc = abc.substring(1); stackb.push(c) ; abc = subabc ; } Stack sum = new Stack(); int temp = 0; int t = 0; while (!stackb.isEmpty()) { // 如果两个里面其中有一个是空了,那么停止 int aInt = Integer.parseInt(stacka.pop().toString()); int bInt = Integer.parseInt(stackb.pop().toString()); temp = aInt - bInt + t + 10; if (temp < 10) { t = -1; } else { temp = temp - 10 ; t = 0; // 将t设置成为1,此时将sumAB的1取得 } sum.push(temp); // 添加到栈中去 }// end while ; while(!stacka.isEmpty()) { int aInt = Integer.parseInt(stacka.pop().toString()); temp = aInt + t; if (temp < 10) { t = 0; } else { temp = temp - 10 ; t = 1; // 将t设置成为1,此时将sumAB的1取得 } sum.push(temp); // 添加到栈中去 } String s = "" ; while (!sum.isEmpty()) { // 如果两个里面其中有一个是空了,那么停止 s = s+sum.pop().toString(); } return s ; } //不同号码相减 private static String jian(String a, String b) { Stack stacka = new Stack(); Stack stackb = new Stack(); String ab = a; System.out.println("-----a------ |-" +ab); while (ab.length() != 0) { char c = ab.charAt(0); String subab = ab.substring(1); stacka.push(c) ; ab = subab ; } String abc = b; System.out.println("-----b------|-" +abc); while (abc.length() != 0) { char c = abc.charAt(0); String subabc = abc.substring(1); stackb.push(c) ; abc = subabc ; } Stack sum = new Stack(); int temp = 0; int t = 0; while (!stackb.isEmpty()) { // 如果两个里面其中有一个是空了,那么停止 int aInt = Integer.parseInt(stacka.pop().toString()); int bInt = Integer.parseInt(stackb.pop().toString()); temp = aInt - bInt + t + 10; if (temp < 10) { t = -1; } else { temp = temp - 10 ; t = 0; // 将t设置成为1,此时将sumAB的1取得 } sum.push(temp); // 添加到栈中去 }// end while ; String s = "" ; while (!sum.isEmpty()) { // 如果两个里面其中有一个是空了,那么停止 s = s+sum.pop().toString(); } return s ; } //同号相加 private static String jia(String a, String b) { Stack stacka = new Stack(); Stack stackb = new Stack(); String ab = a; while (ab.length() != 0) { char c = ab.charAt(0); String subab = ab.substring(1); stacka.push(c) ; ab = subab ; } String abc = b; while (abc.length() != 0) { char c = abc.charAt(0); String subabc = abc.substring(1); stackb.push(c) ; abc = subabc ; } Stack sum = new Stack(); int temp = 0; int t = 0; while (!stackb.isEmpty()) { // 如果两个里面其中有一个是空了,那么停止 int aInt = Integer.parseInt(stacka.pop().toString()); int bInt = Integer.parseInt(stackb.pop().toString()); temp = aInt + bInt + t; if (temp < 10) { t = 0; } else { temp = temp - 10 ; t = 1; // 将t设置成为1,此时将sumAB的1取得 } sum.push(temp); // 添加到栈中去 }// end while ; while(!stacka.isEmpty()) { int aInt = Integer.parseInt(stacka.pop().toString()); temp = aInt + t; if (temp < 10) { sum.push(temp); t = 0; } else { temp = temp - 10 ; t = 1; // 将t设置成为1,此时将sumAB的1取得 } sum.push(temp); // 添加到栈中去 } if(t==1) { sum.push(t) ; } String s = "" ; while (!sum.isEmpty()) { // 如果两个里面其中有一个是空了,那么停止 s = s+sum.pop().toString(); } return s ; } private static boolean getWhoIsGiger(String a, String b) { if (a.length() > b.length()) { return true ; } //a的长度等于b的长度 boolean sig = true ; boolean isBiger = true ; // 默认a > b while (b.length() != 0) { //因为b的长度小,所以它先没有 int intB = Integer.parseInt(b.charAt(0)+"") ; b = b.substring(1) ; int intA = Integer.parseInt(a.charAt(0)+"") ; a = a.substring(1) ; if(sig) { if(intA < intB) { //高位上比较 b要大于a了 isBiger = false ; sig = false ; } } } return isBiger; } } //end class
网上的代码是要计算a 和 b的长度,我在想,要是a和b的长度超过了int类型的长度,那么不是不能用了。所以用栈,这么就不用考虑a 和 b的长度了
代码还有问题的
哎 这个ACM还是有的难的
发表评论
-
acm1009
2012-02-16 19:15 0import java.util.ArrayList ... -
HDU ACM 1008
2012-02-16 15:53 1814import java.util.ArrayList; ... -
acm资料(java)
2012-02-10 11:31 1423http://www.java3z.com -
HDU ACM 1003
2012-02-09 20:03 1777(免费宾馆住宿 + 实习工资)阿里巴巴 ... -
ACM 1002
2012-02-08 09:07 1721A + B Problem II Time Limit ... -
ACM 1001
2012-02-09 10:47 1603Sum Problem T ... -
JAVA ACM的使用(转)
2012-02-03 20:22 19247. POJ高精度题目汇总 ...
相关推荐
杭电acm 1000-2099 杭电acm 1000-2099 杭电acm 1000-2099 杭电acm 1000-2099
北大1000题至2000部分题的源代码...
杭电acm1000,很小,很简单的源代码,真的不错……
杭电ACM1000-1099题目代码,可以AC的,蛮不错的,大家看一看把!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include using namespace std; int main() { int a,b; while(cin>>a>>b) cout; return 0; }
Ural ACM 1000源代码(c++),vc++6.0在XPsp2下编译通过,Timus Online Judge再线测评通过
北大ACM JUDGE系统1000-1008.(有的有比较详尽的注释,有的可能没有,但是应该都能看懂,代码还是不叫规范的。呵呵)
北大OJ acm 通过源码 本人自创 绝无抄袭
清华acm 的源码 1000-1020
杭电ACM答案(从1000-1099,真实详细!!)
杭电acm上的第一道题目,虽然很简单,可还是有人栽进去,就拿来分享一下
杭电oj1000题解题报告
我是个初学者,自己做的。希望对后来的初学者有帮助
http://acm.hdu.edu.cn/ 1102 1106 1108 1114 1142 1146 1150 杭电 acm的AC解题报告
杭电ACM离线题库(1000-4955)
杭电ACM答案 1000-1099 找了好久才找到,参考一下,不错喔
杭电ACM答案(1000-1099)和大家分享
acm资源汇总,编程语言c++,1000+道题目
北大ACM题库(3000多道题) html格式 想成为ACM高手?谁能做出1000道以上的那就绝对是高手了!