关于算法-数据结构:PAT甲级1005-Spell-It-Right

题目要求:

给定一个非负整数,将其每一位进行相加,而后对后果的每一位从左往右输入其对应的英文数字

算法思路:

因为整数大小最大为10^100,得用string存储才行,对string中的每一位减去’0’后进行求和,而后再转化为string,从左往右顺次输入对应每一位的英文字母,为了不便对最终后果的每一位进行输入建设从数字到英文单词的映射numToWords,下标示意每一位数字,其值代表对应的英文单词。

提交后果:

AC代码:
#include<cstdio>
#include<string>
#include<iostream>

using namespace std;

string numToWords[10] = {"zero","one","two","three","four","five","six","seven","eight","nine"};

int main(){
    string a;
    cin>>a;
    //对每一位进行求和
    int sum = 0;
    for(int i=0;i<a.length();++i){
        sum += (a[i]-'0');
    }
    //而后将sum转化为string不便对每一位进行操作
    string s = to_string(sum);
    for(int i=0;i<s.length();++i){
        cout<<numToWords[s[i]-'0'];
        if(i<s.length()-1) cout<<" ";
    } 
    return 0 ;
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理