- 浏览: 3560961 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 1848import java.util.ArrayList; ... -
acm资料(java)
2012-02-10 11:31 1454http://www.java3z.com -
HDU ACM 1003
2012-02-09 20:03 1811(免费宾馆住宿 + 实习工资)阿里巴巴 ... -
ACM 1002
2012-02-08 09:07 1748A + B Problem II Time Limit ... -
ACM 1001
2012-02-09 10:47 1629Sum Problem T ... -
JAVA ACM的使用(转)
2012-02-03 20:22 19627. POJ高精度题目汇总 ...
相关推荐
【标题】"PKU acm 1000题-2000题" 涉及的是北京大学(PKU)ACM/ICPC(国际大学生程序设计竞赛)训练题目的一部分,这个范围涵盖了从1000题到2000题的解题源代码。在ACM/ICPC中,参赛队伍需要编写程序解决一系列算法...
【杭电ACM 1000-2099】是杭州电子科技大学(Hangzhou Dianzi University,简称“杭电”)ACM/ICPC(国际大学生程序设计竞赛)训练平台上的一个问题集,涵盖了从1000到2099编号的编程题目。这些题目旨在锻炼和提升...
《杭电ACM1000-1099题目代码解析及学习指南》 杭州电子科技大学(简称“杭电”)的ACM竞赛题目在编程爱好者中具有很高的知名度,其涵盖的问题范围广泛,难度适中,是提高编程技能、理解和运用算法的良好平台。这个...
北大ACM 1000题指的是北京大学计算机科学系设立的一系列算法竞赛题目集合,它属于ACM(Association for Computing Machinery)国际大学生程序设计竞赛的一部分。ACM竞赛是全球范围内最具影响力的大学生计算机编程...
【标题】"清华acm 1000-1020" 涉及的知识点主要集中在算法竞赛,特别是编程挑战的范畴。这通常指的是清华大学主办的ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)训练题目,编号从...
【Ural ACM 1000源代码(c++)】是一个编程竞赛相关的项目,其中包含了使用C++语言编写的源代码,这些代码是为了解决特定的算法问题而设计的。Ural ACM通常指的是乌拉尔大学(University of Ural)举办的算法竞赛,这...
杭电acm1000,很小,很简单的源代码,真的不错……
#include using namespace std; int main() { int a,b; while(cin>>a>>b) cout; return 0; }
这些题目来自于北京大学ACM在线评测系统的1000到1008号题目,这是一个针对算法和编程能力的训练集。ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)是全球范围内的一个权威性编程竞赛...
【杭电ACM答案(1000到1099)】这个压缩包文件主要包含的是杭州电子科技大学(简称杭电)ACM国际大学生程序设计竞赛(ICPC)的练习题答案。ACM竞赛是全球范围内极具影响力的编程比赛,旨在提升大学生的算法设计、...
杭电acm上的第一道题目,虽然很简单,可还是有人栽进去,就拿来分享一下
杭电oj1000题解题报告
我是个初学者,自己做的。希望对后来的初学者有帮助
在本压缩包中,我们看到的是与杭电(杭州电子科技大学)ACM竞赛相关的解题报告,主要涵盖了1000至1050编号范围内的题目。这些题目是编程竞赛的一部分,通常涉及算法设计、数据结构和问题解决技巧。在ACM(国际大学生...
【杭电ACM答案 1000-1099】是一份珍贵的资源,主要针对参与杭州电子科技大学(Hangzhou Dianzi University,简称杭电)ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest,ICPC)训练的...
杭电ACM离线题库(1000-4955)
代码中使用了`ifstream`来读取数据文件“1000.txt”,然后进行简单的加法运算。这体现了: - **输入输出流**:利用`ifstream`和`ofstream`进行文件的读写操作。 - **循环结构**:通过`for`循环处理每一组输入数据,...
【杭电ACM答案(1000-1099)】是一个针对杭州电子科技大学(Hangzhou Dianzi University,简称“杭电”)ACM/ICPC竞赛训练题目的资源集合,其中包含了从1000到1099编号的题目解答。这个压缩包是编程爱好者和参赛者...
在ACM竞赛中,能够完成1000道以上题目的选手通常被认为具有非常高的算法水平和问题解决能力。这是因为每道题目背后都涉及到不同的知识领域和思维模式,解决这些问题需要深厚的理论基础、丰富的实践经验以及良好的...