传送门:E - A == B ?
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
分析:
题目很简单,比较两个数大小,开始注意到题目没有指明数据类型,可能有坑,考虑用字符数组做,但是交一发直接WA,后来发现没有处理后面0和小数点。
考虑几组测试数据(此题不用考虑001 和1的情况):
1.23 1.2300000
100 100.000000
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#define MANLEN 100000
using namespace std;
char a[MANLEN],b[MANLEN];
int main ()
{
while(cin >> a >> b)
{
int len=0;
if(strchr(a, '.')){
for(len = strlen(a)-1; a[len] == '0'; len--);
a[len+1] = '\0';
if(a[len] == '.') a[len] = '\0';
}
if(strchr(b, '.')){
for(len = strlen(b)-1; b[len] == '0'; len--);
b[len+1] = '\0';
if(b[len] == '.') b[len] = '\0';
}
//cout << a<< endl << b << endl;
if(!strcmp(a, b))
cout << "YES" << endl;
else cout << "NO" << endl;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
}
}
本文介绍了一种比较两个浮点数字符串表示的方法,通过去除尾部的零和小数点,使用字符数组进行精确比较。文章提供了一个C++实现示例,解决了直接比较可能导致的精度问题。

被折叠的 条评论
为什么被折叠?



