1002 写出这个数
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码实现
//c++
#include <iostream>
#include <string>
using namespace std;
// 拼音数字数组,下标对应数字
string pinyin[] = {
"ling", "yi", "er", "san", "si",
"wu", "liu", "qi", "ba", "jiu"};
int main() {
string n;
cin >> n; // 输入字符串 n
int digit_sum = 0; // 数字和初始化为 0
for (char c : n) {
// 遍历字符串 n 中的每个字符
digit_sum += c - '0'; // 将字符转换为数字并加到数字和中
}
string sum_pinyin = to_string(digit_sum); // 将数字和转换为字符串
for (int i = 0; i < sum_pinyin.size(); i++) {
// 遍历字符串 sum_pinyin 中的每个字符
int digit = sum_pinyin[i] - '0'; // 获取当前数字字符对应的数字
cout << pinyin[digit]; // 输出该数字的汉语拼音
if (i != sum_pinyin.size() - 1) {
// 如果不是最后一个数字字符,则输出空格
cout << " ";
}
}
cout << endl; // 输出换行符
return 0; // 程序结束
}
# python
# 定义字典,用于将数字转换为拼音
pinyin_dict = {
0: 'ling',
1: 'yi',
2: 'er',
3: 'san',
4: 'si',
5: 'wu',
6: 'liu',
7: 'qi',
8: 'ba',
9: 'jiu'
}
# 读入正整数 n
n = input().strip()
# 计算各位数字之和
digit_sum = sum(int(x) for x in n)
# 将数字之和转换为拼音并输出
digits = [int(x) for x in str(digit_sum)]
print(' '.join(pinyin_dict[d] for d in digits))
总结
c++:
- for (char c : n) // 遍历字符串 n 中的每个字符,是c++11的语法
- string sum_pinyin = to_string(digit_sum); // 将数字和转换为字符串,to_string是相关的函数
python:
- python字典其实就是STL中的map,是一系列键值对的组合
- input().strip()//strip()可以用来去除输入时的空格
- python中可以用int(),str()进行数字与字符串之间转换,较为方便
' '.join(...)
则是使用空格字符' '
把一组字符串连接成一个新的字符串。在这里,连接的是一个表达式pinyin_dict[d]
的结果组成的迭代器,迭代器中的每个元素都表示一个数字的汉语拼音。