PAT Advanced Level 1005 Spell It Right
1. 问题描述

2. Solution
1、思路分析
题意:
给定一个整数n,把n的各个数位上的数字求和,把和用英语单词输出。如,给定n=12345,各个数位上的和为1+2+3+4+5=15,则输出one five。
分析:
输入的整数到了100次方量级,用int有溢出的风险。只能按字符串读入,按位求和。然后,遍历和,逐位输
出英语单词(使用字符串单词map)。
2、代码实现
// PAT Advance Level 1005 // Ye Qiu #include <iostream> #include <cstdio> #include <string> #include <algorithm> using namespace std; int main() { #ifdef ONLINE_JUDGE #else freopen(input/1005.txt, r, stdin); #endif string numEngMap[10] = {zero, one, two, three, four, five, six, seven, eight, nine}; string s; cin >> s; int res = 0; for (char c: s) res += c - '0'; string strRes = to_string(res); for (int i = 0; i < strRes.length(); i++) { if (i) printf( ); printf(%s, numEngMap[strRes[i] - '0'].c_str()); } return 0; } 3、复杂度分析
时间复杂度: O(n)
空间复杂度: O(1)