题目如下链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805519074574336
这道题思路很简单,就是把输入的N的每一位相加起来,得到的数针对每一位以英文输出,每一位之间要有空格。
例如:12345->求和得到15->输出one five
这道题给定的N的取值范围是 (≤10^100)。
一开始使用了long long存储数据,总会有一个测试用例通不过。
然后想起来,long long的最大值:9223372036854775807 long long的最小值:-9223372036854775808
根本存不了10的100次方的数字。
所以改用了string来存储,代码如下:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
string num;//10^100超过long long的取值范围
int sum=0;
string sum_str;
string number[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
cin>>num;
for (long long i=0; i<num.length(); i++) {
sum+=(num[i]-'0');
}
sum_str = to_string(sum);
cout<<number[(sum_str[0]-'0')];
for (long long i=1; i<sum_str.length(); i++) {
cout<<" "<<number[(sum_str[i]-'0')];
}
return 0;
}