top1编程
← 返回题目
题解

【入门】数据分析

1 条题解

  • 0
    @ 2026-7-31 20:48:10

    解题思路

    给一个整数 n,要传出两个数字信息:第一个是 n 一共有多少位,第二个是把 n 中每一位数字里是偶数的那些位加起来。

    思路:把 n 一位一位拆出来处理。

    1. 循环取出 n 的最低位(用 n 除以 10 取余数)
    2. 每取出一位,位数加 1
    3. 判断这一位是不是偶数:是偶数就加到总和上
    4. 把 n 除以 10,去掉这一位,继续处理下一位,直到 n 变成 0
    5. 输出位数和偶数位之和

    举例:n = 12345678

    • 一共 8 位,所以第一个信息是 8
    • 偶数位是 2、4、6、8,加起来等于 20,所以第二个信息是 20

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        long long n;  // 接收到的整数
        cin >> n;
    
        int cnt = 0;  // 记录位数(第一个数字信息)
        int sum = 0;  // 记录偶数位数字之和(第二个数字信息)
    
        // 从最低位开始,一位一位处理
        while (n > 0) {
            int d = n % 10;  // 取出当前最低位
            cnt++;           // 每有一位,长度加 1
            if (d % 2 == 0) {
                sum += d;    // 这一位是偶数,就加到总和上
            }
            n /= 10;         // 去掉最低位,继续看下一位
        }
    
        cout << cnt << " " << sum;  // 输出两个数字信息
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(位数),n 最多 9 位,循环次数很少
    • 空间复杂度:O(1),只用了几个变量
    • 1