#include <string.h>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <map>
#include <queue>
#include <math.h>
using namespace std;
string str;
map<char,string> mp;
map<int,string> mp2;
void init()
{
mp['1']="yi";
mp['2']="er";
mp['3']="san";
mp['4']="si";
mp['5']="wu";
mp['6']="liu";
mp['7']="qi";
mp['8']="ba";
mp['9']="jiu";
mp2[3]="Qian";
mp2[2]="Bai";
mp2[1]="Shi";
}
int main()
{
init();
getline(cin,str);
if(str[0]=='-')
{
printf("Fu ");
str.erase(str.begin());
}
string result;
if(str=="0")
{
result="ling";
}
int len=str.length();
int step=0;
while(len>=4)
{
string temp="";
string target=str.substr(len-4,4);
len-=4;
bool flag=false;
for(int i=3;i>=0;i--)
{
if(target[i]=='0'&&flag==true)
{
temp="ling "+temp;
flag=false;
}
else if(target[i]!='0'&&i<3)
{
temp=mp[target[i]] + " " +mp2[3-i]+ " "+temp;
flag=true;
}
else if(target[i]!='0')
{
temp=mp[target[i]]+ " "+temp;
flag=true;
}
}
if(step==1)
{
temp+="Wan ";
}
result=temp+result;
step++;
}
string target=str.substr(0,len);
string temp="";
bool flag=false;
int index=4;
if(len>0)
{
for(int i=len-1;i>=0;i--)
{
if(target[i]=='0'&&flag)
{
temp="ling "+temp;
flag=false;
}
else if(i==len-1&&target[i]!='0')
{
temp=mp[target[i]]+" "+temp;
flag=true;
}
else if(i<len-1&&target[i]!='0')
{
temp=mp[target[i]]+" "+mp2[len-i-1]+" "+temp;
flag=true;
}
}
if(step==1)
{
temp+="Wan ";
}
else if(step==2)
{
temp+="Yi ";
}
result=temp+result;
}
if(result[result.length()-1]==' ')
{
result.erase(result.length()-1);
}
cout<<result;
return 0;
}
PAT甲1082 Read Number in Chinese(25 分)
最新推荐文章于 2020-06-23 23:09:39 发布