oj A == B ?
时间限制: 1S 章节: 字符串
问题描述 :
给你两个非负实数A和B,如果A等于B,输出 “YES”, 否则输出"NO"
输入说明 :
第一行N,表示有N组测试数据。
以下N行,每行两个非负实数 A和B。每个实数不超过1000位,且可能在前面和后面有0存在。
输出说明 :
对于每组测试数据,如果A和B相等则输出 “YES”, 否则输出 “NO”。
每组测试数据占一行,两组测试数据之间无空行。行首与行尾均无空格。
输入范例 :
2
100.0 00100
0100.1234576 00000000100.123457
输出范例 :
YES
NO
ps:先去前面的零再做比较
#include<bits/stdc++.h>
using namespace std;
string Quling(string s)//去零
{
int i=0;
string str;
if(s[0]=='0')
{
while(s[i]=='0')
{
i++;
}
for(unsigned int j=i;j<s.size();j++)
str.push_back(s[j]);
return str;
}
return s;
}
int main()
{
int n;
cin>>n;
for(int cos=0;cos<n;cos++)
{
string s1,s2;
cin>>s1>>s2;
string ss1;
ss1=Quling(s1);
string ss2;
ss2=Quling(s2);
//cout<<ss1<<endl;
if((ss1[0]=='.'&&ss2[0]!='.')||(ss2[0]=='.'&&ss1[0]!='.'))//去零后若一个小数一个不是小数
cout<<"NO"<<endl;
else//都是大于1或都是小于1
{
unsigned int i;
if(ss1.size()==ss2.size())//两串长度相同
{
if(ss1==ss2)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
else//两串长度不等
{
if(ss1.size()<ss2.size())
swap(ss1,ss2);
for(i=0;i<ss2.size();i++)
{
if(ss1[i]!=ss2[i])
{
cout<<"NO"<<endl;
break;
}
}
if(i==ss2.size())
{
if(ss1[i]!='0'&&ss1[i]!='.')
cout<<"NO"<<endl;
else
{
i++;
while(i<ss1.size())
{
if(ss1[i]!='0')
cout<<"NO++"<<endl;
i++;
}
if(i==ss1.size())
cout<<"YES"<<endl;
}
}
}
}
}
}