原题链接:1005 Spell It Right (20分)
题目大意:
输入一个N,N的长度小于10^100。比如:N = 12345,现在要你对N的每位数相加,得到的和用英文输出每一位。
如题得到15,则输出 one five。
分析:
因为 N 的个数很长,我们只能用 string 读入,然后遍历每一位并且相加得sum 并且转为 string。用 word 存一下英文数字,依次遍历就行。
这里用到了 C++11的 auto 进行遍历。
在 for 循环中,auto c :c 的数据类型,可以对 c 的每一位进行遍历。
满分代码:
#include <iostream>
#include <string.h>
#include <algorithm>
#define inf 0x3f3f3f3f
typedef long long LL;
using namespace std;
const int MAXN = 1e3+10;
/*
for(auto c: n) 遍历n中的每一个值 感觉相当于for each
*/
int main() {
string n;
cin >> n;
int sum = 0;
for(auto c: n) {
sum += c - '0';
}
string str = to_string(sum);
string word[10] = {
"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine",
};
cout << word[str[0] - '0'];
for(int i = 1; i <= str.size() - 1; i++) {
cout << " " << word[str[i] - '0'];
}
return 0;
}