//http://www.patest.cn/contests/pat-a-practise/1082
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
int digit;
const char dig[4][5] = { "Qian","" ,"Shi","Bai" };
const char digg[][10] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
char str[15];
int zero=0,els=0;
int start;
int num,yi,wan,length;
zero = 0; els = 0;
scanf("%d", &num);
if (num == 0){//唯一的特殊情况
printf("ling");
return 0;
}
if (num < 0){
printf("Fu ");
num = -num;
}
sprintf(str, "%d", num);//转换为字符串
length = strlen(str);
yi = length >8 ? 0 : -1;//总位数大于8,则当第0位输出后,需要输出“亿”
wan = length > 8 ? 4 : (length > 4 ? (length - 1) % 4 : -1);//总位数大于4且大于8,则第4位输出后需要输出“万”,总位数>4,<8则需要在length-1 % 4后输出“万”
start = length % 4;
for (digit = 0; digit < length; digit++){
if (str[digit] - '0' == 0){//遇到零不能输出ling,因为如果是末位的ling呢?只有当再次遇到非零的数时,才能输出此位的ling
zero = 1;//标记已经遇到过零了,因此当再次遇到别的数字时要输出ling
}
else {
els = 1;//遇到了非零的数字,后面决定是否要输出万,如数字1 0000 2345,没有别的数字,不能输出wan
if (zero == 1){
zero = 0;
if (digit != 0)
printf(" ");
printf("ling");//遇到ling后又遇到了非零的数字
}
if (digit != 0)
printf(" ");
printf("%s", digg[str[digit] - '0']);//输出Bai,Qian等
if (start != 1)
printf(" ");
printf("%s", dig[start]);
}
start--;//start标记此位输出后应该输出Bai,还是Qian,还是Shi,如100,1000,10
if (start < 0)
start = 3;
if (digit == wan && els == 1){<span style="font-family: Arial, Helvetica, sans-serif;">//</span><span style="font-family: Arial, Helvetica, sans-serif;">如数字1 0000 2345,没有别的数字,不能输出wan</span>
printf(" Wan");
zero = 0;
els = 0;
}
else if (digit == yi && els == 1){
printf(" Yi");
zero = 0;
els = 0;
}
}
printf("\n");
return 0;
}