题目链接:PAT【甲级】1005
题目简述:这个题目就是要求去输入一个很大很大的数,当然是去以字符串来处理。然后将其每位相加得出结果,最后以英文数字的方式将其输出。
#include<string>
#include<iostream>
#include<unordered_map>
using namespace std;
unordered_map<int, string> mt{{0, "zero"}, {1, "one"}, {2, "two"},
{3, "three"}, {4, "four"}, {5, "five"},
{6, "six"}, {7, "seven"}, {8, "eight"},
{9, "nine"}};
void output(int ans, int layer){
if(ans != 0){
output(ans / 10, layer + 1);
cout << mt[ans % 10];
if(layer > 0)
cout << " ";
}
}
int main(){
std::ios::sync_with_stdio(false);//关闭流同步
string line;
int ans = 0;
cin >> line;
for (int i = line.size() - 1; i >= 0;i--){
ans += line[i] - '0';
}
output(ans, 0);
if(ans == 0)
cout << mt[0];
return 0;
}
感觉没什么,就是要注意的一点是去处理输出的方式,题目要求数字按序输出,我这里是直接借助递归来做的。毕竟递归思想也就是栈的思想嘛!