1 条题解

  • 0
    @ 2030-5-13 10:42:59

    幸运数字之和

    解题思路

    枚举1~N每个整数x,同时检查x%30与x%107。两个条件都满足时把x本身加入答案。

    例如N=50时,末位7的候选有7、17、27、37、47,只有27能被3整除,所以和为27。

    正确性说明

    模3为0恰好表示能被3整除,模10为7恰好表示个位7。逻辑与完整对应幸运数字定义,每个合法数字被加入一次,其他数字不加入。

    易错点

    求的是幸运数数值总和,不是个数;不能只满足两个条件中的一个。

    复杂度

    时间O(N),空间O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int N;
        cin >> N;
        long long sum = 0;
        for (int x = 1; x <= N; x++)
            if (x % 3 == 0 && x % 10 == 7)
                sum += x;
        cout << sum << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    605
    时间
    1000ms
    内存
    256MiB
    难度
    入门
    标签
    递交数
    22
    已通过
    10
    上传者