非常坑的一道題,看上去水到暴。。順手用__int64,wa了,然後才發現沒這麼簡單。
1、統一正負號
2、去掉先導零
3、去掉小數點後末尾的0
3、各種用0表示的坑 +0 -0 +0.00 -0.000都是yes...
不要小看水題。。ORZ
[cpp]
#include <iostream>
#include <string>
#include <cstdio>
#include <ctype.h>
using namespace std;
int main()
{
string a,b;
string blank="";
while(cin>>a>>b)
{
bool a0=1,b0=1;
//0單獨判斷之,防止0.00 -0 +0.000 +00.000.......等很多種
for(int i=0;i<a.length();i++)
{
if(a[i]!='0' && a[i]!='.' && a[i]!='+' && a[i]!='-')
{
a0=0;
break;
}
}
for(int i=0;i<b.length();i++)
{
if(b[i]!='0'&&b[i]!='.'&&b[i]!='+'&&b[i]!='-')
{
b0=0;
break;
}
}
if(a0==1 && b0==1)
{
cout<<"YES"<<endl;
break;
}
//1-防止+0 0這種
if(isdigit(a[0]))
a.insert(0,"+");
if(isdigit(b[0]))
b.insert(0,"+");
int posa=a.length()-1;
int posb=b.length()-1;
int befzeroa=0,befzerob=0;
for(int j=1;j<posa;j++)
{
if(a[j]=='0')
continue;
else
{
befzeroa=j-1;
break;
}
}
for(int j=1;j<posb;j++)
{
if(b[j]=='0')
continue;
else
{
befzerob=j-1;
break;
}
}
//2-防止009.7 9.7這種
a.erase(1,befzeroa); //正確的刪除用法
b.erase(1,befzerob);
int lastzeroa=a.length();
int lastzerob=b.length();
for(int i=1;i<a.length();i++)
{
if(a[i]=='.')
posa=i;
}
for(int j=1;j<b.length();j++)
{
if(b[j]=='.')
posb=j;
}
for(int p=a.length()-1;p>posa;p--)
{
if(a[p]=='0')
{
a.erase(p,1);
}
else
{
break;
}
}
for(int t=b.length()-1;t>posb;t--)
{
if(b[t]=='0')
{
b.erase(t,1);
}
else
{
break;
}
}
//3-防止3.0 --- 3 這種
if(a[a.length()-1]=='.')
a.erase(a.length()-1,1);
if(b[b.length()-1]=='.')
b.erase(b.length()-1,1);
//cout<<a<<" "<<b<<endl;
if(a==b)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
#include <iostream>
#include <string>
#include <cstdio>
#include <ctype.h>
using namespace std;
int main()
{
string a,b;
string blank="";
while(cin>>a>>b)
{
bool a0=1,b0=1;
//0單獨判斷之,防止0.00 -0 +0.000 +00.000.......等很多種
for(int i=0;i<a.length();i++)
{
if(a[i]!='0' && a[i]!='.' && a[i]!='+' && a[i]!='-')
{
a0=0;
break;
}
}
for(int i=0;i<b.length();i++)
{
if(b[i]!='0'&&b[i]!='.'&&b[i]!='+'&&b[i]!='-')
{
b0=0;
break;
}
}
if(a0==1 && b0==1)
{
cout<<"YES"<<endl;
break;
}
//1-防止+0 0這種
if(isdigit(a[0]))
a.insert(0,"+");
if(isdigit(b[0]))
b.insert(0,"+");
int posa=a.length()-1;
int posb=b.length()-1;
int befzeroa=0,befzerob=0;
for(int j=1;j<posa;j++)
{
if(a[j]=='0')
continue;
else
{
befzeroa=j-1;
break;
}
}
for(int j=1;j<posb;j++)
{
if(b[j]=='0')
continue;
else
{
befzerob=j-1;
break;
}
}
//2-防止009.7 9.7這種
a.erase(1,befzeroa); //正確的刪除用法
b.erase(1,befzerob);
int lastzeroa=a.length();
int lastzerob=b.length();
for(int i=1;i<a.length();i++)
{
if(a[i]=='.')
posa=i;
}
for(int j=1;j<b.length();j++)
{
if(b[j]=='.')
posb=j;
}
for(int p=a.length()-1;p>posa;p--)
{
if(a[p]=='0')
{
a.erase(p,1);
}
else
{
break;
}
}
for(int t=b.length()-1;t>posb;t--)
{
if(b[t]=='0')
{
b.erase(t,1);
}
else
{
break;
}
}
//3-防止3.0 --- 3 這種
if(a[a.length()-1]=='.')
a.erase(a.length()-1,1);
if(b[b.length()-1]=='.')
b.erase(b.length()-1,1);
//cout<<a<<" "<<b<<endl;
if(a==b)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}