HDU 2054 A == B ?(Java大数用equal???C模拟也不能错过)
来源:互联网 发布:stm32f103数据手册pdf 编辑:程序博客网 时间:2024/05/13 22:01
A == B ?
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 88315 Accepted Submission(s): 13940
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
Author
8600 && xhd
Source
校庆杯Warm Up
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2054
PS:原来以为是水题就没有做,后来才发现是大数,就想用Java 里的 BigDecimal里的 equals方法去判断,提交后竟然WA,查看API才知道不行,API原文:
public boolean equals(Object x)
比较此 BigDecimal 与指定的 Object 的相等性。与 compareTo ()不同,仅当两个 BigDecimal 对象的值和标度都相等时,此方法才认为它们相等(因此通过此方法进行比较时,2.0 不等于 2.00)。
比较此 BigDecimal 与指定的 Object 的相等性。与 compareTo ()不同,仅当两个 BigDecimal 对象的值和标度都相等时,此方法才认为它们相等(因此通过此方法进行比较时,2.0 不等于 2.00)。
如果就要用,那怎么办呢?再调用stripTrailingZeros(),API原文
public BigDecimal stripTrailingZeros()
返回数值上等于此小数,但从该表示形式移除所有尾部零的 BigDecimal。
例如,从 BigDecimal 值 600.0 中移除尾部零,该值具有的 [BigInteger, scale] 组件等于 [6000, 1],
使用 [BigInteger, scale] 组件生成的 6E2 等于 [6, -2]
返回:数值上等于移除所有尾部零的 BigDecimal。
返回:数值上等于移除所有尾部零的 BigDecimal。
其实还有更简单的方法,直接用compareTo(),API原文:
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。
指定者:
接口 Comparable<BigDecimal> 中的 compareTo
参数:
val - 将此 BigDecimal 与之比较的 BigDecimal。
返回:
当此 BigDecimal 在数字上小于、等于或大于 val 时,返回 -1、0 或 1。
AC代码1:
import java.math.BigDecimal;import java.util.Scanner;public 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("YES");} else {System.out.println("NO");}/**a = a.stripTrailingZeros();b = b.stripTrailingZeros();if (a.equals(b)) {System.out.println("YES");} else {System.out.println("NO");}*/}}}
AC代码2:
#include <stdio.h>#include <string.h>#include <iostream>using namespace std;char a[100000],b[100000];void change(char s[]){ int i,len; len = strlen(s); if(strstr(s,"."))//含有小数点 { for(i = len-1; s[i] == '0'; i--)//去掉小数末尾的0 { s[i] = '\0'; len--; } } if(s[len-1] == '.') s[len-1] = '\0';}int main(){ while(scanf("%s%s",a,b)!=EOF) { change(a); change(b); /* cout<<"a:"<<a<<endl; cout<<"b:"<<b<<endl; */ if(strcmp(a,b)) printf("NO\n"); else printf("YES\n"); } return 0;}
1 0
- HDU 2054 A == B ?(Java大数用equal???C模拟也不能错过)
- hdu 2054 A == B ? (java大数)
- hdu 2054 A == B ? (java大数)
- HDU-2054-A == B?(Java大数BigDecimal)
- HDU 2054 A==B? 大数
- HDU 1753 大明A+B java大数
- A + B Problem II HDU 1002 ——大数模拟
- hdu 1002 A + B Problem II(大数模拟加法)
- HDU 1753 大明A+B(大数加法,数组模拟)
- NYOJ 524 & HDU 2054 A==B?(模拟)
- HDU 2054 A == B ? By Assassin 模拟
- HDU 5832 A water problem 【大数取模,Java 大数也不是万能的。。】
- equal 、a==b 和 hashcode
- hdu 2054 A == B ?【JAVA】
- HDU 2054 A==B?(java)
- HDU 1002 A + B Problem II(大数加法,C,Java两个版本)
- JAVA 大数A+B
- HDU 1002 A+B(大数)
- ssh
- [iOS]Auto Layout 代码约束
- printk打印不能显示到终端的解决方法
- python list
- 拉手网-个性化推荐方法与系统设计
- HDU 2054 A == B ?(Java大数用equal???C模拟也不能错过)
- 关于 hadoop reduce 阶段遍历 Iterable 的 2 个“坑”
- 不起眼的 z-index 却能牵扯出这么大的学问
- mobie-web开发6位支付密码验证
- 欢迎使用CSDN-markdown编辑器
- HTML,JS, 笔记
- hdu3863——No Gambling(简单博弈)
- O(n)查找第k小(大)的数
- string,char*,char[]转化