1002. 写出这个数 (20)

题目描述

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100^。

输出格式:

在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

提交代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
using namespace std;
int main()
{
int sum = 0;
string str;
string num[10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};

cin >> str;
for (int i = 0; i < str.length(); i++) {
sum += str[i] - '0';
}
str = to_string(sum);
cout << num[str[0] - '0'];
for (int i = 1; i < str.length(); i++) {
cout << " " << num[str[i] - '0'];
}
printf("\n");

return 0;
}

个人思考

C++ 以及算法的不够熟练经常让我在想问题的时候将其复杂化,比如在思考这道题的时候想要将拼音做成字典,没想到这本身就是一个有序列表,直接用数组就可以了。另外,还在想着说通过一直除十取余的方法,来获取和数的各位数字,没想到用字符串的形式来解决问题。