#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
char *pron[] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
inline const char * unit(int i) {
if(i == 1000)
return " Qian";
else if(i == 100)
return " Bai";
else if(i == 10)
return " Shi";
return "";
}
int print(int n, char str[], int pos, int &pd) {
if(n > 0 && n < 10000) {
for(int tmp = n, i = 1000; ; i /= 10) {
int d = tmp/i;
if(d) {
pos += sprintf(str+pos, "%s %s%s",
pd == 0 ? " ling" : "", pron[tmp/i], unit(i));
pd = d;
}
else if(pd >= 0) {
pd = 0;
}
if(i == 1)
break;
tmp %= i;
}
}
return pos;
}
int main(int argc, char **argv) {
long long n;
cin >> n;
bool sign = true;
if(n < 0) {
sign = false;
n = -n;
}
char str[1000] = {};
int pos = 0;
if(n) {
if(!sign) {
pos = sprintf(str, "Fu");
}
int pd = -1;
int npos = print(n/100000000LL, str, pos, pd);
if(npos > pos) {
pos = npos;
pos += sprintf(str+pos, " Yi");
}
n %= 100000000LL;
npos = print(n/10000LL, str, pos, pd);
if(npos > pos) {
pos = npos;
pos += sprintf(str+pos, " Wan");
}
n %= 10000LL;
print(n, str, pos, pd);
printf("%s\n", str[0] != ' ' ? str : str+1);
}
else {
printf("ling\n");
}
return 0;
}
1082. Read Number in Chinese (25)
最新推荐文章于 2020-06-04 17:54:48 发布