A == B_hdu_2054(很有意思).java
2013-08-08 22:01
375 查看
A == B ?
Time Limit: 1000/1000 MS (Java/Others) Memory Limit:32768/32768 K (Java/Others)
Total Submission(s): 50014 Accepted Submission(s): 7695
Problem Description
Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO".
Input
each test case contains two numbers A and B.
Output
for each case, if A is equal to B, you should print "YES", or print "NO".
Sample Input
1 2
2 2
3 3
4 3
Sample Output
NO
YES
YES
NO
Author
8600 && xhd
Source
校庆杯Warm Up
/*
测试数据
0 -0
0 +0
123.123 +00123.12300
100.00 100
.1 0.1
000.000 0
123456789123456789 123456789123456789
1 1
000001000. 1000
+0 -000.000
.0 0
.0 0.
结果全是YES
这些测试数据如果过了基本差不多可以AC了
这都是WA出来的。。。。
*/
两种AC代码:
import java.util.Scanner; //2013-08-08 21:49:41 Accepted 125MS 3208K 1476 B Java public class Main{//全字符串处理 public static void main(String[] args) { Scanner input=new Scanner(System.in); while(input.hasNext()){ String a1=input.next(); String b1=input.next(); a1=ChuLi(a1); b1=ChuLi(b1); if(a1.equals(b1)) System.out.println("YES"); else System.out.println("NO"); } } private static String ChuLi(String a1) { boolean ok=false; a1=a1.replace("+","");//处理掉前边的“+”号 if(a1.startsWith("-")){//先暂时忽略“-”号 a1=a1.substring(1); ok=true;//记着标记有没有“-”号哦 } if(a1.indexOf(".")!=-1){//有小数点的情况 //先去掉后边所有的0 int num=0; for(int i=a1.length()-1;i>=0;i--){ if(a1.charAt(i)!='0'){ num=i+1; break; } } a1=a1.substring(0,num);//去掉后边多余的0 //先去掉前边所有的0 num=0; for(int i=0;i<a1.length();i++){ if(a1.charAt(i)!='0'){ num=i; break; } } a1=a1.substring(num);// if(a1.startsWith("."))//如何开头为“.”,则补零 a1="0"+a1; if(a1.endsWith(".")){//如果末尾为“.”,则去点 a1=a1.substring(0,a1.length()-1); } } else{//没有小数点的情况 int num=0; boolean s=true; for(int i=0;i<a1.length();i++){//只需要处理前边0 if(a1.charAt(i)!='0'){ s=false; num=i; break; } } if(s){//防止000这种情况的出现 a1="0"; }else a1=a1.substring(num); } if(ok&&!a1.equals("0"))//后边那个判断防止-0的出现 a1="-"+a1; return a1; } }
/* * 8878506 2013-08-08 21:34:06 Accepted 2054 265MS 3672K 1376 B Java zhangyi */ import java.math.BigDecimal; import java.util.Scanner; public class Main{//运用大数处理 public static void main(String[] args) { Scanner input=new Scanner(System.in); while(input.hasNext()){ String a1=input.next(); String b1=input.next(); a1=ChuLi(a1); b1=ChuLi(b1); // System.out.println(a1+"####"+b1); BigDecimal a=new BigDecimal(a1); BigDecimal b=new BigDecimal(b1); if(a.equals(b)) System.out.println("YES"); else System.out.println("NO"); } } private static String ChuLi(String a1) { boolean ok=false; a1=a1.replace("+","");//处理掉前边的“+”号 if(a1.startsWith("-")){//先暂时忽略“-”号 a1=a1.substring(1); ok=true;//记着标记有没有“-”号哦 } if(a1.indexOf(".")!=-1){//有小数点的情况 //先去掉后边所有的0 int num=0; for(int i=a1.length()-1;i>=0;i--){ if(a1.charAt(i)!='0'){ num=i+1; break; } } a1=a1.substring(0,num);//去掉后边多余的0 //先去掉前边所有的0 num=0; for(int i=0;i<a1.length();i++){ if(a1.charAt(i)!='0'){ num=i; break; } } a1=a1.substring(num);// if(a1.startsWith("."))//如何开头为“.”,则补零 a1="0"+a1; if(a1.endsWith(".")){//如果末尾为“.”,则去点 a1=a1.substring(0,a1.length()-1); } } else{//没有小数点的情况 int num=0; for(int i=0;i<a1.length();i++){//只需要处理前边0 if(a1.charAt(i)!='0'){ num=i; break; } } a1=a1.substring(num); } if(ok) a1="-"+a1; return a1; } }
相关文章推荐
- hdu 2054 A == B ? (java)
- Java高精度练习 Hdu 1002+1042+1047+1212+1316+1715+1753+2054
- HDU 2054 A == B ?(Java大数用equal???C模拟也不能错过)
- hdu 2054 A == B ?【JAVA】
- HDU 2054 A==B?,NYOJ-524-A-B(很有意思)
- hdu 2054 A == B ? (java)
- hdu 2054 A == B ?【JAVA】
- hdu 2054 A == B ? (java)
- HDU-2054-A == B?(Java大数BigDecimal)
- hdu 2054 A == B ? (java大数)
- HDU 2054 JAVA
- hdu 2054 A == B ? (java大数)
- 大数--HDU 2054 A==B?(java)
- HDU-2054 A == B? Java
- hdu 2054 A == B ? (java)
- HDU 1090 JAVA
- hdu 1102 A + B Problem II (java大数)
- HDU 1042 N! -- 求阶乘 java大法好
- HDU 1316 -- How Many Fibs?(Java)
- hdu1023 Train Problem II 卡特兰数,JAVA大数类