题目描述
给定一个非负整数 NN,你的任务是计算 NN 的所有数字的总和,并以英语输出总和的每个数字。
输入格式
共一行,包含一个整数 NN,整数 NN 可能会出现前导0,比如:00123,对应的整数是123。
输出格式
共一行,用英语输出总和的每个数字,单词之间用空格隔开。
样例
Sample Input 1
12345
Sample Output 1
one five
数据范围
0 ≤ N≤ 10^{100}0≤N≤10^ 100
求解思路:
由于数据范围为10^100,所以我们:
1.用字符串来存放输入的整数N,
2.将字符串转化为可相加整数,用一个标签 sum存放相加的结果,
3.创建一个int类型数组 c [ ] 用以存放sum分解后每个位上的数,
4.建立一个0~9的英文字符数组 b [ ],
5.倒序输出 即为:b[ c[max]] 即可求解;
源码如下:
#include <iostream>
using namespace std;
int main() {
string a, b[10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
int sum = 0, n, c[1000], m = 0;
cin >> a;
for (int i = 0; i < a.length(); i++) {
a[i] = a[i] - '0';
sum += a[i];
}
while (sum != 0) {
n = sum % 10;
sum /= 10;
c[m] = n;
m++;
}
for (int i = m - 1; i >= 0; i--) {
cout << b[c[i]] << " ";
}
return 0;
}