给定一个非负整数 N,你的任务是计算 N 的所有数字的总和,并以英语输出总和的每个数字。
输入格式
共一行,包含一个整数 N。
输出格式
共一行,用英语输出总和的每个数字,单词之间用空格隔开。
数据范围
$0≤N≤10^{100}$
输入样例:
12345
输出样例:
one five
这道题需要3个步骤:
- 用string读入整个数
- (int)计算各位之和
- 倒进string
- 把res一位一位放进字符串sum
- 翻转字符串sum(STLreverse)
- 把string的每一位转化成英文输出
- 特判0
接下来是这道题的代码:
#include<bits/stdc++.h>
using namespace std;
string x[11] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};//数组存英文
int main()
{
string a;//用string读入
cin >> a;
if(a == "0")//特判0
{
cout << "zero" << endl;
return 0;
}
int res = 0;
for(int i = 0; i < a.size(); i ++)
{
int u = a[i] - '0';
res += u;
}//求出res
//cout << res << endl;
string sum = "";
while(res > 0)
{
int u = res % 10;
int op = u + '0';
sum += op;
res /= 10;
}//把res倒进sum
//cout << sum;
reverse(sum.begin(), sum.end());
//翻转sum
//cout << sum;
for(int i = 0; i < sum.size(); i ++)
{
int u = sum[i] - '0';
cout << x[u] << ' ';
}//一位一位输出sum的英文
cout << endl;
return 0;//愉快的结束了代码/大雾
}