题解 | #学英语# 感觉这题考的是速度而非技巧

学英语

https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc

#include <bits/stdc++.h>
using namespace std;
string digits[10]={"","one","two","three","four","five","six","seven","eight","nine"};
string tens[10]={"","","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};
string elevens[10]={"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};
string places[5]={"","hundred","thousand","million","billion"};

void numToStr(vector<string>& str,int num)    //处理<1000的数
{
    if(num==0)    
        return;
    if(num/100!=0)    //百位
    {
        str.push_back(digits[num/100]);
        str.push_back("hundred");
    }
    num=num%100;
    if(str.size()!=0 && num!=0)    //百位和十位,或百位和个位(若十位为0)中间加and
        str.push_back("and");
    if(num/10!=0)    //若十位不为0
    {
        if(num<=19)    //十几的情况单独处理
            str.push_back(elevens[num-10]);
        else
        {
            str.push_back(tens[num/10]);
            if(num%10!=0)    //分开处理,避免在几十整的时候连续输入两个空格造成的格式错误
                str.push_back(digits[num%10]);
        }
    }
    else    //若十位为0
        str.push_back(digits[num]);
}

void outprint(const vector<string> strs)    //加空格输出用的,避免去算每个单词前后要怎么加空格
{
    if(strs.size()!=0)
        for(string str:strs)
            cout<<str<<' ';
}

int main(){
    long num;
    cin>>num;
    //n<2000000,所以分组可以固定,每三位划分成一组
    int ones=num%1000;
    num/=1000;
    int thousands=num%1000;
    num/=1000;
    int millions=num%1000;
    num/=1000;
    int billions=num;
    vector<string> onesStr,thousandsStr,millionsStr,billionsStr;    //vector<string>而非string,方便用outprint函数加空格
    numToStr(onesStr,ones);
    numToStr(thousandsStr,thousands);
    numToStr(millionsStr,millions);
    numToStr(billionsStr,billions);
    if(billionsStr.size()!=0)
    {
        outprint(billionsStr);
        cout<<"billion ";
    }
    if(millionsStr.size()!=0)
    {
        outprint(millionsStr);
        cout<<"million ";
    }
    if(thousandsStr.size()!=0)
    {
        outprint(thousandsStr);
        cout<<"thousand ";
    }
    if(onesStr.size()!=0)
    {
        outprint(onesStr);
    }
    
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务