PTA_乙级_1002

PTA_乙级_1002_第1张图片
思路:不仅超出int还超出Longlong,直接用string类型定义n,for循环来遍历每一位字符然后转换成数字进行累加,再用to_string把数字和转换成字符串,再用for循环把数字和的每一位定位到pinyin字符串数组上输出

#include 
using namespace std;

int main() {
    string pinyin[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};

    string n;
    cin >> n;

    int sum = 0;
    for (char c : n) {
        sum += c - '0';  // 将字符转换为数字并累加
    }

    string sum_str = to_string(sum);  // 将和转换为字符串

    for (int i = 0; i < sum_str.length(); i++) {
        int digit = sum_str[i] - '0';  // 获取和的每一位数字
        cout << pinyin[digit];
        if (i != sum_str.length() - 1) {
            cout << " ";
        }
    }

    return 0;
}

注意:
用int来定义n

    int n;
    cin>>n;
    cout<<n;

输入:1234567890987654321123456789
输出:2147483647

long long
输出:9223372036854775807
超出long long范围


将字符转换为数字并累加

int sum = 0;
for (char c : n) {
    sum += c - '0';  // 将字符转换为数字并累加
}

你可能感兴趣的:(PTA乙级,c++)