2035: A-B Problem
时间限制: 1 Sec 内存限制: 64 MB
提交: 30 解决: 14
您该题的状态:已完成
[提交][状态][讨论版]
题目描述
A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下A-B吧。
现在有两个实数A和B,聪明的你,能不能判断出A-B的值是否等于0呢?
输入
有多组测试数据。每组数据包括两行,分别代表A和B。 它们的位数小于100,且每个数字前中可能包含+,- 号。 每个数字前面和后面都可能有多余的0。 每组测试数据后有一空行。
输出
对于每组数据,输出一行。 如果A-B=0,输出YES,否则输出NO。
样例输入
<span style="color:black">1
1
1.0
2.0
</span>
样例输出
<span style="color:black">YES
NO</span>
提示
来源
题目智能推荐 1308 1860 1921 1793 1367 1783 |
1.去掉前面的符号
2.后导0,及前导0
package 大数;
import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
while(in.hasNext())
{
BigDecimal s=in.nextBigDecimal();
BigDecimal k=in.nextBigDecimal();
String temp=s.toPlainString();
if(temp.charAt(0)=='+') {
temp=temp.substring(1, temp.length());
}
s=new BigDecimal(temp).stripTrailingZeros();
String temp1=k.toPlainString();
if(temp1.charAt(0)=='+') {
temp1=temp1.substring(1, temp1.length());
}
k=new BigDecimal(temp1).stripTrailingZeros();
if(s.compareTo(k)==0)
System.out.println("YES");
else
System.out.println("NO");
// System.out.println();
}
}
}
测试数据很渣渣
另外 java的next和nextline的区别
//next()和nextLine()的区别详解
/*next()方法在读取内容时,会过滤掉有效字符前面的无效字符,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其过滤掉;只有在读取到有效字符之后,next()方法才将其后的空格键、Tab键或Enter键等视为结束符;所以next()方法不能得到带空格的字符串。
*/
/*nextLine()方法字面上有扫描一整行的意思,它的结束符只能是Enter键,即nextLine()方法返回的是Enter键之前没有被读取的所有字符,它是可以得到带空格的字符串的。
*/