1 条题解

  • 0
    @ 2026-1-30 19:32:03
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    // 计算一个数字的各位数字之和
    int get_sum(int num) {
        int sum = 0;  // 累加当前数字的各位和
        while (num > 0) {
            sum += num % 10;  // 提取最后一位并累加
            num /= 10;        // 去掉最后一位
        }
        return sum;
    }
    
    int main() {
        int x, n;                // x为目标数字和,n为输入整数的个数
        // [1] 输入目标数字和x与整数个数n
        cin >> x >> n;
        int arr[10005];         // 存储输入的n个整数(n≤10000)
        // [2] 输入n个整数,依次存入数组arr
        for (int i = 0; i < n; ++i) {
            cin >> arr[i];
        }
    
        int res[10005];         // 存储符合条件的整数
        int sum = 0;            // 累加符合条件的数的总和
        int count = 0;          // 统计符合条件的数的个数
        // [3] 遍历所有输入的整数,筛选出各位数字和为x的数
        for (int i = 0; i < n; ++i) {
            if (get_sum(arr[i]) == x) {
                res[count] = arr[i];
                sum += arr[i];
                count++;
            }
        }
    
        // [4] 对符合条件的数进行升序排序
        sort(res, res + count);
    
        // [5] 输出符合条件的数的总和与个数
        cout << sum << " " << count << endl;
        // [6] 输出排序后的符合条件的数,用空格分隔
        for (int i = 0; i < count; ++i) {
            cout << res[i] << " ";
        }
    
        return 0;
    }
    
    • 1

    信息

    ID
    1190
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    1
    已通过
    1
    上传者