题目描述
给定一个非负整数 N,你的任务是计算 N 的所有数字的总和,并以英语输出总和的每个数字。
输入格式
共一行,包含一个整数 N。
输出格式
共一行,用英语输出总和的每个数字,单词之间用空格隔开。
数据范围
0≤N≤10100
输入样例:
12345
输出样例:
one five
算法1
题目主要考核 数字和字符串的转换
我们输入的字符串(不是数字因为数据范围太大了)逐个转换成数字相加
然后将相加的和拆解成单个的数字 找出对应的字符串 输出即可
{1,"one"},
{2,"two"},
{3,"three"},
{4,"four"},
{5,"five"},
{6,"six"},
{7,"seven"},
{8,"eight"},
{9,"nine"},
{0,"zero"}
C++ 代码
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
int main(){
string s;
cin >> s;
int num = 0;
for(auto& e:s){
num += e-'0';
}
map<int,string> m{
{1,"one"},
{2,"two"},
{3,"three"},
{4,"four"},
{5,"five"},
{6,"six"},
{7,"seven"},
{8,"eight"},
{9,"nine"},
{0,"zero"}
};
vector<string> ans;
while(num!=0){
int idx = num%10;
num = num/10;
ans.push_back(m[idx]);
}
reverse(ans.begin(),ans.end());
for(int i = 0; i<ans.size();i++){
cout << ans[i];
if(i!=ans.size()-1){
cout << " ";
}
}
cout<<endl;
return 0;
}