1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| #include<bits/stdc++.h> using namespace std; #define rep(i,a,n) for(int i=(a);i<(n);i++) #define per(i,a,n) for(int i=(n);i>=(a);i--) #define fi first #define se second typedef pair <int,int> pII; typedef long long ll; const int INF = 0x3f3f3f3f;
char s[20]; string chinese[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; ll n; int main(){ #ifdef LOCAL freopen("1.in","r",stdin); #endif scanf("%s",s); int t = 0; int sz = strlen(s);
if(s[0] == '-') t = 1; per(i,t,sz) s[i+10-sz] = s[i]; rep(i,t,10-sz+t) s[i] = '0'; vector<string> ans; if(s[0] == '-') ans.push_back("Fu"); bool flag = true; int idx = 0; rep(i,1,10) if(s[i] > '0'){ idx = i; break; } rep(i,1,10) s[i] -= '0'; if(s[1] != 0){ ans.push_back(chinese[s[1]]); ans.push_back("Yi"); } if(s[2] != 0){ ans.push_back(chinese[s[2]]); ans.push_back("Qian"); }else{ if(s[1] && (s[3] || s[4] || s[5])) ans.push_back("ling"); } if(s[3] != 0){ flag = true; ans.push_back(chinese[s[3]]); ans.push_back("Bai"); }else{ if(s[4] != 0 || s[5] != 0) ans.push_back("ling"); } if(s[4] != 0){ flag = true; ans.push_back(chinese[s[4]]); ans.push_back("Shi"); }else{ if(s[5] != 0) ans.push_back("ling"); } if(s[5] != 0){ ans.push_back(chinese[s[5]]); }else if((s[2] == 0 && s[3] == 0 && s[4] == 0) && (s[6] || s[7] || s[8] || s[9])) ans.push_back("ling"); if(s[2] || s[3] || s[4] || s[5]) ans.push_back("Wan");
flag = true;
if(s[6] != 0){ ans.push_back(chinese[s[6]]); ans.push_back("Qian"); }else{ if(idx <= 5 && (s[7] || s[8] || s[9])) ans.push_back("ling"); } if(s[7] != 0){ ans.push_back(chinese[s[7]]); ans.push_back("Bai"); }else{ if(s[8] != 0 || s[9] != 0) ans.push_back("ling"); } if(s[8] != 0){ ans.push_back(chinese[s[8]]); ans.push_back("Shi"); }else{ if(s[9] != 0) ans.push_back("ling"); } if(s[9] != 0) ans.push_back(chinese[s[9]]); if(ans.size() == 0) ans.push_back("ling"); bool lingling = true; rep(i,0,ans.size()){ if(ans[i] == "ling" && lingling && ans.size()>1) { continue; } if(ans[i] != "ling" && ans[i] != "Fu") lingling = false; else lingling = true; cout<<ans[i]; if(i==ans.size()-1) cout<<'\n'; else cout<<' '; } return 0; }
|