杭电2054(A == B ?)详解
来源:互联网 发布:杨贵妃 山口百惠 知乎 编辑:程序博客网 时间:2024/04/30 11:29
杭电2054
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 22 23 34 3
Sample Output
NOYESYESNO
方法一:考虑有小数点时的判断,一般想到用字符串装这两个数字。先找出小数点的位置,比较两个小数点位置是否相同,不同即可判断出,相同进行下一步判断;相同时再比较小数点前的各位是否相等,不相等即可判断,相等进行下一步判断;比较小数点后面的各位是否相等,这里比较到长度短的最后一位即可,至于从短的最后一位到长的最后一位,只要判断长字符串这段区域是否都为0即可。
方法二:要是用java内部方法来判断,就没有这么复杂了。类 BigDecimal:不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。 然后再用方法
compareTo
public int compareTo(BigDecimal val)
- 将此 BigDecimal 与指定的 BigDecimal 比较。根据此方法,值相等但具有不同标度的两个 BigDecimal 对象(如,2.0 和 2.00)被认为是相等的。相对六个 boolean 比较运算符 (<, ==, >, >=, !=, <=) 中每一个运算符的各个方法,优先提供此方法。建议使用以下语句执行上述比较:(x.compareTo(y) <op>0),其中 <op> 是六个比较运算符之一。
- 指定者:
- 接口
Comparable<BigDecimal>
中的compareTo
- 参数:
val
- 将此 BigDecimal 与之比较的 BigDecimal。- 返回:
- 当此 BigDecimal 在数字上小于、等于或大于 val 时,返回 -1、0 或 1。
方法一 代码实现:
import java.util.*;class Main{public static void main(String args[]){Scanner sc=new Scanner(System.in);boolean isEqual;String stra,strb,str;int lena,lenb,point_a,point_b,i,minlen,maxlen;while(sc.hasNext()){isEqual=true;stra=sc.next();strb=sc.next();lena=stra.length();lenb=strb.length();point_a=point(stra,lena);point_b=point(strb,lenb);//System.out.println(point_a+" "+point_b);if(point_a!=point_b){//第一次判断:小数点位置是否一样System.out.println("NO");//System.out.println("****");continue;}for(i=0;i<point_a;i++){//第二次判断:小数点之前是否相等if(stra.charAt(i)!=strb.charAt(i)){isEqual=false;//System.out.println("*");break;}}if(lena>lenb){//让stra表示短的字符串,strb表示长的字符串str=strb;strb=stra;stra=str;}//System.out.println(stra+" "+strb);minlen=lena<lenb?lena:lenb;maxlen=lena<lenb?lenb:lena;for(i=point_a;i<minlen;i++){//第三次判断:小数点之后到短的最后一位是否相等if(stra.charAt(i)!=strb.charAt(i)){isEqual=false;//System.out.println("**");break;}}for(i=minlen;i<maxlen;i++){//第四次判断:短字符串的最后一位到长字符串最后一位是相等if(strb.charAt(i)!='0'&&strb.charAt(i)!='.'){isEqual=false;//System.out.println(i+"***");break;}}if(isEqual){System.out.println("YES");}else{System.out.println("NO");}}}public static int point(String a,int n){//计算小数点的位置int i,x=0;for(i=0;i<n;i++){if(a.charAt(i)=='.'){x=i;break;}}if(x==0){//若没有小数点,就把字符串最后作为小数点的位置return n;}return x;}}
方法二 代码实现:
import java.util.*;import java.math.BigDecimal;class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);while(sc.hasNext()){BigDecimal a=sc.nextBigDecimal();BigDecimal b=sc.nextBigDecimal();if(a.compareTo(b)!=0){System.out.println("NO");}else{System.out.println("YES");}}}}
3 0
- 杭电2054(A == B ?)详解
- 杭电2054 A == B ?
- 杭电 2054 A==B?
- 杭电2054A == B ?
- 杭电2054 A==B?
- 【杭电】[2054]A==B
- 杭电2054-A == B ?
- 杭电2054A == B ?
- 杭电2054 A==B ?(指针练习)
- A == B ?(杭电2054)
- 杭电ACM 2054 A == B ?
- 杭电ACM 2054:A == B ?
- 大概是原创吧,杭电2054 A==B?
- 杭电-{A} + {B}
- 杭电A+B
- 人见人爱A+B(杭电2033)
- 人见人爱A+B(杭电2033)
- 杭电A+B problem1002 (大数)
- WindowsBuilder的DES文件加密系统实现
- NSCharacterSet NSMutableCharacterSet
- TCP/IP协议三次握手与四次挥手流程解析
- 阿里巴巴研发C++笔试
- Brackets! Brackets!
- 杭电2054(A == B ?)详解
- 81. PHP 后期静态绑定
- jquery实现checkbox的全选与取消
- Filter及FilterChain的使用详解
- 管理杂谈(一)-- 谈谈心态
- activity之间跳转生命周期浅析
- svn冲突解决
- coco2d-iphone: 环境搭建
- ubuntu下qtcreator内配置使用boost以及调试配置