#include #include #include #include struct word { string text; long num; }; long find(string s) { if (s == "negative") return -1; if ( s == "zero") return 0; if (s == "one") return 1; if (s == "two") return 2; if (s == "three") return 3; if (s == "four") return 4; if (s == "five") return 5; if (s == "six") return 6; if (s == "seven") return 7; if (s == "eight") return 8; if (s == "nine") return 9; if (s == "ten") return 10; if (s == "eleven") return 11; if (s == "twelve") return 12; if (s == "thirteen") return 13; if (s == "fourteen") return 14; if (s == "fifteen") return 15; if (s == "sixteen") return 16; if (s == "seventeen") return 17; if (s == "eighteen") return 18; if (s == "nineteen") return 19; if (s == "twenty") return 20; if (s == "thirty") return 30; if(s == "forty") return 40; if (s == "fifty") return 50; if (s == "sixty") return 60; if (s == "seventy") return 70; if (s == "eighty") return 80; if (s == "ninety") return 90; if (s == "hundred") return 100; if (s == "thousand") return 1000; if (s == "million") return 1000000; } int main () { char vstup[10000]; string line; bool OK = true; long out; bool negative; long mil; long ths; long sub; while (OK) { out = 0; mil = 0; ths = 0; sub = 0; negative = false; cin.getline(vstup, 10000); line = vstup; if (line.size() == 0) OK = false; if (OK) { string word = ""; for (unsigned int i = 0; i < line.size(); i++) { if (line[i] != ' ') word += line[i]; if ((line[i] == ' ') || (i == line.size()-1)) { long cis = find(word); if (cis < 0) negative = true; else if (cis == 1000000) { mil = sub; sub = 0; } else if (cis == 1000) { ths = sub; sub = 0; } else if (cis == 100) { sub *= 100; } else if (i == line.size()-1) sub += cis; else sub += cis; word = ""; } } out = mil * 1000000 + ths * 1000 + sub; if (negative) out *= -1; cout << out << endl; } } return 0; }