#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
bool qvwei(string &str)
{
int i=0,flag=0;
while(i<str.length())
{
if(str[i]=='.')
{
while(str[str.length()-1]=='0')
str.erase(str.length()-1,1);
if(str[str.length()-1]=='.')
{
str.erase(str.length()-1,1);
flag=1;
}
}
if(flag)
break;
++i;
}
return true;
}
bool qvtou(string &str)
{
while((str[0]<='0'||str[0]>'9')&&str[1]!='.')
str.erase(0,1);
return true;
}
bool fuhao(string &str)
{
if(str[0]=='-')
return false;
else
return true;
}
int main()
{
string str1,str2;
while(cin>>str1>>str2)
{
if(fuhao(str1)!=fuhao(str2))
cout<<"NO"<<endl;
qvtou(str1);
qvwei(str1);
qvtou(str2);
qvwei(str2);
if(str1==str2)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
tips:其实还蛮难的。就是没想到会有什么样的样例,没想到是如此复杂的一个题,要竟然用了50+行。
思路原以为停留在数值的比较,最后用的是字符串的比较。要记下这个思路。
就是把开头多余的0给去掉,然后小数后面多余的0也去掉。
整篇都是抄的别人的。
最后一只显示编译错误,
二进制“>>”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)
原因是用的<cstring> 头文件,换了<string.h> 不行,只有用<string>才行
还学会了erase的用法
erase方法原型
1. basic_string & erase(size_type pos=0, size_type n=npos);
即从给定起始位置pos
处开始删除, 要删除字符的长度为n
, 返回值修改后的string对象引用