ac猪首的答案(包过
2025-10-09 21:35:52
发布于:浙江
0阅读
0回复
0点赞
#include <iostream>
#include <string>
#include <map>
using namespace std map<string, long long> wordToValue = {
{"zero", 0}, {"one", 1}, {"two", 2}, {"three", 3}, {"four", 4},
{"five", 5}, {"six", 6}, {"seven", 7}, {"eight", 8}, {"nine", 9},
{"ten", 10}, {"eleven", 11}, {"twelve", 12}, {"thirteen", 13},
{"fourteen", 14}, {"fifteen", 15}, {"sixteen", 16}, {"seventeen", 17},
{"eighteen", 18}, {"nineteen", 19}, {"twenty", 20},
{"thirty", 30}, {"forty", 40}, {"fifty", 50}, {"sixty", 60},
{"seventy", 70}, {"eighty", 80}, {"ninety", 90}
};
string word;
long long total = 0;
long long current = 0;
int sign = 1;
while (cin >> word) {
if (word == "negative") {
sign = -1;
}
else if (word == "hundred") {
current *= 100;
}
else if (word == "thousand") {
current *= 1000;
total += current;
current = 0;
}
else if (word == "million") {
current *= 1000000;
total += current;
current = 0;
}
else {
// 普通数字词
current += wordToValue[word];
}
}
total += current;
// 特判 zero:如果 total 为 0,无论是否 negative,输出 0
// 因为 -0 在整数中就是 0
cout << sign * total << endl;
return 0;
}
这里空空如也
有帮助,赞一个