题目描述
给定一个非负整数 N,你的任务是计算 N 的所有数字的总和,并以英语输出总和的每个数字。
输入格式
共一行,包含一个整数 N,整数 N 可能会出现前导0,比如:00123,对应的整数是123。
输出格式
共一行,用英语输出总和的每个数字,单词之间用空格隔开。
样例
输入数据 1
12345
输出数据 1
one five
数据范围
0≤N≤10100
解题思路
用一个string数组装从0~9对应的英文:
string yy[12]={"zero","one","two","three","four","five","six","seven","eight","nine"};//写个数组装下数字对应英文
将每一位数上的数加起来用ans装:
for(int i=0;i<a.length();i++)
ans += a[i]-'0';
再用一个string数组装下ans每一位数的数字对应英文:
string sw[1000];//装总和的每一位数的英文
while(ans)
{
sw[t++]=yy[ans%10];
ans/=10;
}
完整代码
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string a;//装输入的数字串
string yy[12]={"zero","one","two","three","four","five","six","seven","eight","nine"};//写个数组装下数字对应英文
int main()
{
cin >> a;
long long ans=0;//用来装a的每一位数之和
for(int i=0;i<a.length();i++)
ans += a[i]-'0';
int t=0;//定做下标
string sw[1000];//装总和的每一位数的英文
while(ans)
{
sw[t++]=yy[ans%10];
ans/=10;
}
for(int i=t-1;i>=0;i--)//因为装进去时是先装最后面的,所以反着输出
cout << sw[i] << " ";
return 0;
}