题目描述
给定一个非负整数 NN,你的任务是计算 NN 的所有数字的总和,并以英语输出总和的每个数字。
输入格式
共一行,包含一个整数 NN,整数 NN 可能会出现前导0,比如:00123,对应的整数是123。
输出格式
共一行,用英语输出总和的每个数字,单词之间用空格隔开。
样例
输入数据 1
12345
Copy
输出数据 1
one five
Copy
数据范围
0 ≤ N≤ 10^{100}0≤N≤10100
代码:
(用最基础的做法来解决)
优化:可直接用数组定义英文在判断后输出;
#include <bits/stdc++.h>
using namespace std;
int j, sum, a[1000010];
int main() {
string ch;
cin >> ch;
for (int i = 0; i < ch.size(); i++) {
sum += ch[i] - '0';
}
while (sum != 0) {
a[j] = sum % 10;
j++;
sum /= 10;
}
for (int i = j - 1 ; i >= 0; i--) {
if (a[i] == 0)
cout << "zero" << ' ';
if (a[i] == 1)
cout << "one" << ' ';
if (a[i] == 2)
cout << "two" << ' ';
if (a[i] == 3)
cout << "three" << ' ';
if (a[i] == 4)
cout << "four" << ' ';
if (a[i] == 5)
cout << "five" << ' ';
if (a[i] == 6)
cout << "six" << ' ';
if (a[i] == 7)
cout << "seven" << ' ';
if (a[i] == 8)
cout << "eight" << ' ';
if (a[i] == 9)
cout << "nine" << ' ';
}
return 0;
}