杭电2054

刚还是还以为是简单的a==b,汗,重新审题如下:

View Code
 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 int judge(char ch)
 6 {
 7     if(ch == '-')
 8         return -1;
 9     return 0;
10 }
11 int for_Locate(string a)
12 {
13     int i = 0;
14     if(a[0] == '-' || a[0] == '+')
15         i = 1;
16     for(; i < a.size() && a[i] == '0' ; ++i);
17     return i;
18 }
19 
20 bool point(string a)
21 {
22     for(int i = a.size()-1; i >= 0; --i)
23         if(a[i] == '.')
24             return true;
25     return false;
26 }
27 int re_Locate(string a)
28 {
29     if(point(a))
30     {
31         int i;
32         for(i = a.size()-1; i >= 0 && a[i] == '0'; --i);
33         if(a[i] == '.')
34             i = i-1;
35         return i;
36     }
37     return a.size()-1;
38 }
39 void f(string& a, int beg, int end)
40 {
41     if(beg == a.size())
42         a = "0";
43     else
44     {
45         string s(a.begin()+beg, a.begin()+end+1);
46         a = s;
47     }
48 }
49 
50 
51 int main()
52 {
53     string a, b;
54     while(cin >> a >> b)
55     {
56         int flag1 = 0, flag2 = 0;
57         flag1 = judge(a[0]);
58         flag2 = judge(b[0]);
59         int beg = for_Locate(a), end = re_Locate(a);
60         f(a, beg, end);
61         beg = for_Locate(b);
62         end = re_Locate(b);
63         f(b, beg, end);
64         string str("YES");
65 
66         if(flag1 != flag2)
67         {
68             if(a == b && a == "0")
69                 str = "YES";
70             else
71                 str = "NO";
72         }
73         else if(a != b)
74         str = "NO";
75         //cout << "a:" << a << "><" << "b:" << b << endl;
76         cout << str << endl;
77     }
78     return 0;
79 }
80 
81 
82 /*
83 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
84 00000000000000000002222 2222
85 200 200000
86 0.00002 0.000020000000000000000000000000000000
87 00000000000000000000.00002 0.0000200000
88 0022000 000000000002200
89 -0022.00200 -000000000000022.002000000000000000000
90 0.00 0.000000000000000
91 000000000 0000000000000
92 000001.00000 1
93 -0001.000 0001
94 -0 0
95 
96 */
原文地址:https://www.cnblogs.com/sanghai/p/2995905.html