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
问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2054
问题分析:
- 不必想太多,不用考虑前导0的问题
- 找到小数点,将小数点后的无用的0去掉即可。
源代码
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <iterator>
#include <cstring>
#include <cctype>
#include <stack>
using namespace std;
char s1[50000], s2[50000];
void f(char s[]) //简化字符串
{
int len = strlen(s);
int tag = 0;
for(int i = 0; i < len; i++) //找是否有小数点
{
if(s[i] == '.')
{
tag = 1;
break;
}
}
if(tag) //有小数点
{
for(int i = len-1; i >= 0; i--)
{
if(s[i] == '0') //将无用的'0'换为'\0'
s[i] = '\0';
else
break;
len--;
}
if(s[len-1] == '.') //如果小数点后的0全是无用的,则将小数点换为'\0'
s[len-1] = '\0';
}
}
int main()
{
while(scanf("%s%s", s1, s2) != EOF)
{
f(s1);
//printf("%s\n", s1);
f(s2);
//printf("%s\n", s2);
if(strcmp(s1, s2)) //比较s1和s2是否相等
printf("NO\n");
else
printf("YES\n");
}
return 0;
}