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
Author
8600 && xhd
Source
题目乍一看签到提
wa几发发现有坑点可能位小数和分数还有前导后导0
思路:开数组一个存小数点前一个存后然后正着倒着去0断变化之后是否相同ac
代码如下:
#include<iostream>
using namespace std;
int main()
{string a,b;
while(cin>>a)
{
cin>>b;
string g1,g2,g3,g4;
int yy = a.length();int flag3 = 0;
for(int i=0;i<a.length();++i)
{
if(a[i] == '.')
{
yy = i+1;break;//g1存小数点前
}
if(a[i] == '0' && flag3 == 0)
{
continue;
}
else{
flag3 = 1;
g1 += a[i];
}
}
int flag =0;
for(int i=a.length()-1;i>=yy;--i)
{
if(a[i] == '0' && flag == 0)
{
continue;
}
else{
flag =1;g2 += a[i];//g2存小数点前
}
}
int yyy = b.length();int flag4=0;
for(int i=0;i<b.length();++i)
{
if(b[i] == '.')
{
yyy = i+1;break;
}
if(b[i] == '0' && flag4 == 0)
{
continue;//去前导0
}
else{
flag4 = 1;
g3 += b[i];//g3获取变化之后的小数点前的
}
}
int flag1 =0;
for(int i=b.length()-1;i>=yyy;--i)
{
if(b[i] == '0' && flag1 == 0)
{
continue;//去后导零
}
else{
flag1 =1;g4 += b[i];//g4获取变化之后的小数点后
}
}
if(g1 == g3 && g2 == g4)//判端变化之后是否相同
{
printf("YES\n");
}
else{
printf("NO\n");
}
}
return 0;
}