diff --git a/Luogu/problem/P2108/P2108.cpp b/Luogu/problem/P2108/P2108.cpp index 127dafb5..814e72be 100644 --- a/Luogu/problem/P2108/P2108.cpp +++ b/Luogu/problem/P2108/P2108.cpp @@ -3,64 +3,52 @@ using namespace std; int main() { + string s; map m; - string s; - long long ans = 0, now = 0; - - m["one"] = 1; - m["two"] = 2; - m["three"] = 3; - m["four"] = 4; - m["five"] = 5; - m["six"] = 6; - m["seven"] = 7; - m["eight"] = 8; - m["nine"] = 9; - m["ten"] = 10; - m["eleven"] = 11; - m["twelve"] = 12; - m["thirteen"] = 13; - m["fourteen"] = 14; - m["fifteen"] = 15; - m["sixteen"] = 16; + int ans = 0, tmp = 0, w = 1; + m["one"] = 1; + m["two"] = 2; + m["three"] = 3; + m["four"] = 4; + m["five"] = 5; + m["six"] = 6; + m["seven"] = 7; + m["eight"] = 8; + m["nine"] = 9; + m["ten"] = 10; + m["eleven"] = 11; + m["twelve"] = 12; + m["thirteen"] = 13; + m["fourteen"] = 14; + m["fifteen"] = 15; + m["sixteen"] = 16; m["seventeen"] = 17; - m["eighteen"] = 18; - m["nineteen"] = 19; - m["twenty"] = 20; - m["thirty"] = 30; - m["forty"] = 40; - m["fifty"] = 50; - m["sixty"] = 60; - m["seventy"] = 70; - m["eighty"] = 80; - m["ninety"] = 90; - + m["eighteen"] = 18; + m["nineteen"] = 19; + m["twenty"] = 20; + m["thirty"] = 30; + m["forty"] = 40; + m["fifty"] = 50; + m["sixty"] = 60; + m["seventy"] = 70; + m["eighty"] = 80; + m["ninety"] = 90; while (cin >> s) { if (s == "negative") { - cout << "-"; - } - else if (s == "hundred") { - ans += now; - ans *= 100; - now = 0; - } - else if (s == "thousand") { - ans += now; - ans *= 1000; - now = 0; - } - else if (s == "million") { - ans += now; - ans *= 1000000; - now = 0; - } - else { - now += m[s]; + w = -1; + } else if (s == "hundred") { + tmp *= 100; + } else if (s == "thousand") { + ans += tmp * 1000; + tmp = 0; + } else if (s == "million") { + ans += tmp * 1000000; + tmp = 0; + } else { + tmp += m[s]; } } - if (now) { - ans += now; - } - cout << ans << endl; + ans += tmp; + cout << w * ans << endl; return 0; }