模拟法
思路:
-
各个位求和,结果用 res 保存
-
res 求余得到末尾数字,把对应的英文存入结果 out。res 更新为 res / 10。相当于把末尾去掉了。
-
倒序输出 out 中的元素即可。
#include <iostream>
#include <vector>
using namespace std;
string english[10] ={"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int main()
{
string s;
cin >> s;
if(s == "0")
{
cout << "zero";
return 0;
}
int res = 0;
for(auto c : s)
{
res += c - '0';
}
vector<string> out;
while(res)
{
out.push_back(english[res % 10]);
res = res / 10;
}
for(int i = out.size() - 1; i >= 0; i--)
cout << out[i] << " ";
}
不懂就问 这样的res会超最大存储嘛
怎么可能呢,输入最多就100位,100个9加起来才多大,不可能超的。