题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
#include <iostream>
using namespace std;
void three(string s);
void learn(string s);
int main() {
int a;
cin>>a;
string s=to_string(a);
learn(s);
return 0;
}
void learn(string s){
int number;
if(s.length()%3==0){
number=s.length()/3-1;
}
else{number=s.length()/3;}
if(number==0){
three(s);
}
if(number>0){
int x=s.length()-number*3;
if(number==1){
three(s.substr(0,x));
cout<<"thousand ";
}
if(number==2){
three(s.substr(0,x));
cout<<"million ";
}
if(number==3){
three(s.substr(0,x));
cout<<"billion ";
}
learn(s.substr(x));
}
}
void three(string s){
int value=stoi(s);
if(value<=9){
switch(value){
case 1:cout<<"one ";break;
case 2:cout<<"two ";break;
case 3:cout<<"three ";break;
case 4:cout<<"four ";break;
case 5:cout<<"five ";break;
case 6:cout<<"six ";break;
case 7:cout<<"seven ";break;
case 8:cout<<"eight ";break;
case 9:cout<<"nine ";break;
default: break;
}
}
if (value>=10&&value<=19){
switch(value){
case 10:cout<<"ten ";break;
case 11:cout<<"eleven ";break;
case 12:cout<<"twelve ";break;
case 13:cout<<"thirteen ";break;
case 14:cout<<"fourteen ";break;
case 15:cout<<"fifteen ";break;
case 16:cout<<"sixteen ";break;
case 17:cout<<"seventeen ";break;
case 18:cout<<"eighteen ";break;
case 19:cout<<"nineteen ";break;
default: break;
}
}
if (value>=20&&value<=99){
switch(s[0]){
case '2':cout<<"twenty ";break;
case '3':cout<<"thirty ";break;
case '4':cout<<"forty ";break;
case '5':cout<<"fifty ";break;
case '6':cout<<"sixty ";break;
case '7':cout<<"seventy ";break;
case '8':cout<<"eighty ";break;
case '9':cout<<"ninety ";break;
default:break;
}
s=s.substr(1);
three(s);
}
if(value==100){cout<<"one hundred ";}
if(value>100){
switch(s[0]){
case '1':cout<<"one hundred and ";break;
case '2':cout<<"two hundred and ";break;
case '3':cout<<"three hundred and ";break;
case '4':cout<<"four hundred and ";break;
case '5':cout<<"five hundred and ";break;
case '6':cout<<"six hundred and ";break;
case '7':cout<<"seven hundred and ";break;
case '8':cout<<"eight hundred and ";break;
case '9':cout<<"nine hundred and ";break;
default:break;
}
three(s.substr(1));
}
}
// 64 位输出请用 printf("%lld")

