1082 Read Number in Chinese


1082 Read Number in Chinese

思路

对于每个零,标记一下,然后如果后面出现非0的数字就先$push$零,然后再输出对应的数字,单位。需要注意的是如果万位出现的是$0$,则需要$push$万。

还需要特判一下只有一个零的情况。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
string a;int n;
string b[10]={"","Shi","Bai","Qian","Wan","Shi","Bai","Qian","Yi"};
string num[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; 
vector<string>ans;
int main(){
    cin>>a;if(a=="0") return puts("ling"),0;
    if(a[0]=='-') ans.pb("Fu"),a=a.substr(1);bool f=0;
    n=a.size();
    for(int i=0;i<n;i++){
        int x=n-i-1;
        if(a[i]=='0'){f=1;
            if(x==4) ans.pb(b[x]);
        }
        else {
            if(f) ans.pb(num[0]),f=0;
            ans.pb(num[a[i]-'0']);
            if(x>0) ans.pb(b[x]);
        } 
    }cout<<ans[0];
    for(int i=1;i<ans.size();i++) cout<<" "<<ans[i];
    return 0;
}

文章作者: Harris-H
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Harris-H !
评论
  目录