2023-3-20 每日一题题解:拼写正确
文章目录
1. 题目描述
给定一个非负整数 N,你的任务是计算 N 的所有数字的总和,并以英语输出总和的每个数字。
2. 输入格式
共一行,包含一个整数 N,整数 N 可能会出现前导0,比如:00123,对应的整数是123。
3. 输出格式
共一行,用英语输出总和的每个数字,单词之间用空格隔开。
4. 样例
4.1 输入
12345
4.2 输出
one five
5. 数据范围
0 ≤ N ≤ 10^100
6. 题解
6.1 文字描述
- 首先看题目是需要输出总和的每一位的数值对应的英文单词,则可以先定义一个b数组,将0~9的英文单词存入数组。
- 其次看数据范围最大为10的100次方,排除用整形数据输入,考虑使用字符串,那么定义一个字符串s并输入。
- 可以先用一层for循环遍历字符串s的每一位并求和,并且定义一个sum进行存储,由于数据过大,可用long long定义。
- 再写一个while循环遍历sum的每一位,并存入事先定义好的a数组中。
- 最后循环遍历a数组中的每一个元素,对应b数组中的每一位数的英文单词进行输出即可。
6.2 样例刨析
12345 —— 1+2+3+4+5 = 15 —— one five
6.3 上代码
#include<iostream>
using namespace std;
string b[15] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
int a[100010];
int main()
{
string s;
long long sum = 0, cnt = 0;
cin >> s;
// 将字符串的每一位遍历并求和
for(int i = 0; i < s.size(); i++)
sum += s[i] - '0';
// 将总和的每一位分离并存入a数组
while(sum)
{
a[cnt] = sum % 10;
sum /= 10;
cnt++;
}
// 将事先存入a数组的每一位数对应英文单词输出即可
for(int i = cnt-1; i >= 0; i--)
cout << b[a[i]] << " ";
return 0;
}