P1109 英文翻译(10的13次方以内的数字翻译)
#include <bits/stdc++.h> using namespace std; string n; string a[] = {"","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"}; string b[] = {"","ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"}; int i,x; void f(){ if(n[i]!='0'){ cout<<a[int(n[i]-'0')]; } } void f1(int x){ if(n.size()>x && n[i+1]=='0' && n[i+2]=='0'){ cout<<"and "; } if(n[i]!='0'){ cout<<a[int(n[i]-'0')]<<" hundred"; if(n[i+1]!='0' || n[i+2]!='0'){ cout<<" and "; } } x = int(n[i+1]-'0')*10+int(n[i+2]-'0'); if(x>=20){ cout<<b[x/10]<<"-"<<a[x%10]; }else{ cout<<a[x]; } i += 2; } void f2(){ x = int(n[i]-'0')*10+int(n[i+1]-'0'); if(x>=20){ if(x%10!=0){ cout<<b[x/10]<<"-"<<a[x%10]; }else{ cout<<b[x/10]; } }else{ cout<<a[x]; } i += 1; } int main() { cin>>n; for(i = 0;i<n.size();i++){ x = 0; if(n.size()-i==12){ f1(12); cout<<" billion "; }else if(n.size()-i==11){ f2(); cout<<" billion "; }else if(n.size()-i==10){ f(); cout<<" billion "; }else if(n.size()-i==9){ f1(9); cout<<" million "; }else if(n.size()-i==8){ f2(); cout<<" million "; }else if(n.size()-i==7){ f(); cout<<" million "; }else if(n.size()-i==6){ f1(6); cout<<" thousand "; }else if(n.size()-i==5){ f2(); cout<<" thousand "; }else if(n.size()-i==4){ f(); cout<<" thousand "; }else if(n.size()-i==3){ f1(3); }else if(n.size()-i==2){ f2(); }else{ f(); } } return 0; }