1 条题解

  • 0
    @ 2026-1-30 19:46:28
    #include<bits/stdc++.h>
    using namespace std;
    // [1] 存储输入的上限N
    int N;
    // [2] 累加所有幻数的和(符合命名规范:累加用sum)
    int sum = 0;
    
    int main() {
        cin >> N; // [3] 输入上限N
        // [4] 遍历1到N的所有整数
        for(int i = 1; i <= N; i++) {
            int num = i; // [5] 取出当前数,用于逐位拆分
            int flag = 0; // [6] 标记当前数是否包含数字7(0=不包含,1=包含)
            // [7] 逐位分解当前数,检查是否包含7
            while(num) {
                if(num % 10 == 7) { // [8] 检查当前数的最后一位是否为7
                    flag = 1; // [9] 标记为包含7,跳出循环
                    break;
                }
                num /= 10; // [10] 去掉当前数的最后一位,继续检查下一位
            }
            // [11] 判断是否为幻数:能被7整除 或 包含数字7
            if(i % 7 == 0 || flag) {
                sum += i; // [12] 符合条件则累加到总和
            }
        }
        cout << sum; // [13] 输出所有幻数的和
        return 0;
    }
    
    • 1

    信息

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