本文共 1188 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要将给定的非常大的非负整数N的各位数字之和转换成对应的英文单词。由于N可能非常大,不能直接用整型变量来处理,因此我们需要将其作为字符串处理,并逐个字符转换为数字进行计算。
#include#include #include #include using namespace std;int main() { string str; cin >> str; long long sum = 0; for (int i = 0; i < str.length(); i++) { sum += str[i] - '0'; } vector digits; if (sum == 0) { digits.push_back(0); } else { while (sum > 0) { digits.push_back(sum % 10); sum /= 10; } reverse(digits.begin(), digits.end()); } string result; for (size_t i = 0; i < digits.size(); ++i) { if (i != 0) { result += " "; } result += words[digits[i]]; } cout << result << endl; return 0;}
std::cin
读取输入字符串str
。sum
中。sum
为0,直接存储0;否则,使用循环不断除以10,得到每个数字并存储在digits
向量中。最后反转digits
向量以确保最高位在前。digits
向量,将每个数字转换为对应的英文单词并拼接成结果字符串。这种方法确保了我们能够正确处理非常大的数,并将其各位数字之和转换为对应的英文单词。
转载地址:http://wbbs.baihongyu.com/