题目链接
PAT甲级1082 Read Number in Chinese
代码
#include<bits/stdc++.h>
using namespace std;
vector<string> digit = {"ling", "yi","er",
"san","si","wu",
"liu","qi","ba", "jiu"};
vector<string> d = { "", "Wan", "Yi"};
vector<string> pos = {
"", "Shi", "Bai", "Qian"
};
int main() {
string num;
cin >> num;
string ans;
if(num[0] == '-') {
ans = "Fu ";
num = num.substr(1);
}
if(num.length() == 1 && num[0] == '0') {
cout << "ling" << endl;
return 0;
}
int n_zero = 0;
int len = num.length();
for(int i = 0; i < len; ++i) {
if(num[i] == '0'){
++n_zero;
} else {
if(n_zero >= 1)
ans += " ling";
if(i > 0)
ans += " ";
ans += digit[num[i] - '0'];
if((len - i - 1) % 4)
ans += " " + pos[(len - i - 1) % 4];
n_zero = 0;
}
if((len - i - 1) % 4 == 0 && i != len - 1)
ans += " " + d[(len - i - 1) / 4];
}
cout << ans << endl;
}