1082. Read Number in Chinese (25)
Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese way. Output "Fu" first if it is negative. For example, -123456789 is read as "Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu". Note: zero ("ling") must be handled correctly according to the Chinese tradition. For example, 100800 is "yi Shi Wan ling ba Bai".
Input Specification:
Each input file contains one test case, which gives an integer with no more than 9 digits.
Output Specification:
For each test case, print in a line the Chinese way of reading the number. The characters are separated by a space and there must be no extra space at the end of the line.
Sample Input 1:-123456789
Sample Output 1:
Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu
Sample Input 2:
100800
Sample Output 2:
yi Shi Wan ling ba Bai
#include <iostream>
using namespace std;
string sss[10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
string wei[6] = {"Shi", "Bai", "Qian", "Wan", "Yi"};
int main(){
string s;
cin>>s;
int len = s.length();
int left = 0, right = len - 1;
if(s[0] == '-'){
cout<<"Fu";
left++;
}
while(left + 4 <= right){
right -= 4;
}
while(left < len) {
bool flag = false;
bool havewei = false;
while(left <= right) {
if(left > 0 && s[left] == '0'){
flag = true;
}else{
if(flag == true){
cout<<" ling";
flag = false;
}
if(left > 0)
cout<<" ";
cout<<sss[s[left] - '0'];
havewei = true;
if(left != right){
cout<<" "<<wei[right - left - 1];
}
}
left++;
}
if(havewei == true && right != len - 1){
cout<<" "<<wei[(len - 1 - right) / 4 + 2];
}
right += 4;
}
return 0;
}