今天分享的是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#define ll long long #define db double #define vvi vector > #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; }
点我看PAT甲级的全部题解



