题解 | #人民币转换#很烦这种题
人民币转换
https://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
vector<string> table1 = {"壹", "贰", "叁", "肆", "伍", "陆",
"柒", "捌", "玖", "拾"
};
vector<string> table2 = {"角", "分"};
vector<string> table3 = {"", "拾", "佰", "仟", "", "拾", "佰", "仟", "万"};
int main() {
string sa, sb, input;
cin>>input;
sa = input.substr(0, input.find('.'));
sb = input.substr(input.find('.')+ 1, input.size() - sa.size() + 1);
string res = "";
if (stoi(sb) == 0) {
res += "元整";
} else {
//string sb = to_string(b);
for (int i = 0; i < sb.size(); i++) {
if (sb[i] == '0') continue;
res += table1[sb[i] - '1'] + table2[i];
}
}
if (stoi(sa) != 0) {
res = "元" + res;
//string sa = to_string(a);
int index = 0;
for (auto iter = sa.rbegin(); iter != sa.rend(); iter++) {
if (index == 4) res = "万" + res;
if (*iter == '0') {
while (*iter == '0') {
iter++;
index++;
}
res = "零" + res;
}
if ((index == 1 || index == 5) && *iter == '1') {
res = "拾" + res;
continue;
}
res = table1[*iter - '1'] + table3[index++] + res;
}
}
cout << "人民币" << res;
}
// 64 位输出请用 printf("%lld")