#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdlib>
using namespace std;
char ge[][7]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char wei[][7]={"Shi","Bai","Qian","Wan","Shi","Bai","Qian","Yi"};
int main()
{
char value[12];
scanf("%s",value);
if(value[0]=='-'){
printf("Fu ");
strcpy(value,value+1);
}
if(!strcmp(value,"0")){
printf("ling");
return 0;
}
int len=strlen(value),ef;
bool flag=false;
for(int i=len-1;i>=0;i--){
if(value[i]!='0'){
ef=i;
break;
}
}
for(int i=0;i<len;i++){
if(value[i]!='0'){
if(flag){
printf("ling ");
flag=false;
}
if(len-i-2>=0)
printf("%s %s",ge[value[i]-'0'],wei[len-i-2]);
else
printf("%s",ge[value[i]-'0']);
if(i<ef) printf(" ");
}else if(!strcmp(wei[len-i-2],"Wan")){
printf("Wan");
flag=true;
if(i<ef) printf(" ");
}else{
flag=true;
}
}
return 0;
}
这道题主要还是用查询表来写,然后注意几个特判点,一个是0的情况,另外一个是万位数为0的特判。