1005 Spell It Right (20 分)
今天分享的是PAT甲级的一道小题,简单模拟。
简单翻译:
给一个仅包含数字的字符串,算出这个字符串每一位的和。再以英文输出结果,注意,这里输出的结果不需要按照读音输出。
思路:
简单模拟,求和之后再输出即可。这里需要注意一点,前缀的0不需要输出,但是如果和就是0,还是需要再输出一下0的。
c++代码:
#include"bits/stdc++.h"
#define all(x) x.begin(),x.end()
#define len(x) x.size()
#define INF (1e9)
#define vi vector<int>
#define ll long long
#define db double
#define vvi vector<vector<int>>
#define pb(x) push_back(x);
#define MAXN 100
using namespace std;
string t[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int temp = 0;
void f(int n) {
if (n == 0) return;
f(n / 10);
if (temp == 0) {cout << t[n % 10]; temp++;}
else cout << " " << t[n % 10];
}
int main() {
string s;
cin >> s;
int sum = 0;
for (int i = 0; i < len(s); i++) {
sum += s[i] - '0';
}
if (sum == 0) {
cout << "zero" << endl;
return 0;
}
f(sum);
return 0;
}