1082. Read Number in Chinese (25)

来源:互联网 发布:余弦相似度 网络 编辑:程序博客网 时间:2024/06/05 04:56
#include<cstdio>#include<cstring>#include<iostream>#include<cstdlib>#include<cmath>#include<vector>#include<map>#include<stack>#include<queue>using namespace std;int main(){ const  char *str[9]={"","Shi","Bai","Qian","Wan","Shi","Bai","Qian","Yi"};const  char *num[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};     char s[10];     vector<const char*> v;     scanf("%s",s);     int length=strlen(s);     if(s[0]=='-')     {        v.push_back("Fu");     for(int i=0;i<length;i++)        s[i]=s[i+1];        length--;     }     else if(s[0]=='0'&&length==1)     {      printf("ling\n");         return 0;     } int flag=0; int cnt=0;     for(int i=0;i<length;i++)     {            if(s[i]!='0')            {   if(cnt>0&&(length-i-1!=4||s[i]!=0 ))                    v.push_back("ling");                v.push_back(num[s[i]-'0']);                cnt=0;            }            else if(s[i]=='0')            {            cnt++;            }            if(cnt>0&&length-i-1==4&&cnt<4&&s[i]=='0')            v.push_back(str[length-i-1]);            else if(i!=length-1)            {                if(s[i]!='0')                v.push_back(str[length-i-1]);            }     }     for(int i=0;i<v.size();i++)     if(i==0)        printf("%s",v[i]);   else    printf(" %s",v[i]);   printf("\n");    return 0;}

0 0
原创粉丝点击