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
我認(rèn)為這道題對于我這樣的初學(xué)者來說很容易犯用double型變量儲存數(shù)據(jù)的錯誤,其實不然這道題可能要求輸入的數(shù)據(jù)并不是簡單的數(shù)像1.111這樣的也可能是001.111、001.11100、-001.111 峭弟、+001.111這樣的數(shù)滑沧,所以我在這里用到了用string 類型的變量儲存數(shù)據(jù)在對變量進(jìn)行處理后進(jìn)行比較源请。
//代碼
#include<iostream>
#include<string>
using namespace std;
string Simp(string a)//實現(xiàn)輸入數(shù)字的整合贮喧,去掉無用的“0”
{
string a1;
int c = 0, d=a.length(), e, f = 0, g = 0;
for (int i = 0; i < a.length(); i++)//判斷是否有小數(shù)點,并且記住小數(shù)點的位置
{
if (a[i] == '.')
{
c = 1;
d = i;
break;
}
}
if (c ==1)
{
if (a[0] == '-' || a[0] == '+')
{
a1 += a[0];
g++;
}
for (int i = g; i<d; i++)
{
if (a[i] != '0')
{
f = 1;
e = i;
}
}
if (f ==1)
{
for (int i = e; i < d; i++)
{
a1 += a[i];
g++;
}
}
if (f == 0)
{
a1 += '0';
g++;
}//除去小數(shù)點前的無用“0”
int h = d;
for (int i = d + 1; i < a.length(); i++)
{
if (a[i] != '0')
{
h = i;
}
}
if (h != d)
{
a1 += '.';
g++;
for (int i = d + 1; i <= h; i++)
{
a1+= a[i];
g++;
}
}//除去小數(shù)點后的無用“0”
}
if (c == 0)
{
if (a[0] == '-' || a[0] == '+')
{
a1 += a[0];
g++;
}
for (int i = g; i<a.length(); i++)
{
if (a[i] != '0')
{
f = 1;
e = i;
break;
}
}
if (f == 1)
{
for (int i = e; i < d; i++)
{
a1 += a[i];
g++;
}
}
if (f == 0)
{
a1+= '0';
g++;
}
}
return a1;
}
int Judge(string a, string b)//判斷兩個數(shù)字是否相同
{
int e = 1;
if (a[0] != '+' || a[0] != '-')
{
a += a[a.length() - 1];
for (int i = a.length()-2; i >0; i--)
{
a[i] = a[i - 1];
}
a[0]= '+';
}
if (b[0] != '+' || b[0] != '-')
{
b += b[b.length() - 1];
for (int i = b.length(); i >0; i--)
{
b[i] = b[i - 1];
}
b[0] = '+';
}//添加“+”號方便判斷
if (a.length() != b.length())
{
e = 0;
}
if (a.length() == b.length())
{
for (int i = 0; i < a.length(); i++)
{
if (a[i] != b[i])
{
e = 0;
break;
}
}
}
return e;
}
int main()
{
string a,b;
while (cin >> a >> b)
{
string a1, b1;
a1=Simp(a);
b1 = Simp(b);
if (Judge(a1, b1) == 1)
{
cout << "YES" << endl;
}
if (Judge(a1, b1) == 0)
{
cout << "NO" << endl;
}
}
}