top1编程
← 返回题目
题解

幸运数字

1 条题解

  • 0
    @ 2026-8-5 0:36:21

    解题思路

    把数字逐位拆开,奇数的位相加存进 o,偶数的位相加存进 e。如果 o == e 就是幸运数字。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
    
        int o = 0, e = 0;   // o存奇数位和,e存偶数位和
        while (n) {         // 逐位拆开
            int d = n % 10;   // 取当前个位
            if (d % 2 == 1) o += d;   // 奇数位加进o
            else e += d;              // 偶数位加进e
            n /= 10;                  // 去掉个位
        }
    
        if (o == e) cout << "Yes" << endl;
        else cout << "No" << endl;
        return 0;
    }
    

    复杂度分析

    循环次数等于位数,n 最大 100000(6 位),时间复杂度 O(位数),额外空间复杂度 O(1)。

    • 1