top1编程
← 返回题目
题解

【入门】能被5整除且至少有一位数字是5的所有整数的个数

1 条题解

  • 0
    @ 2026-7-30 1:37:04

    解题思路

    只枚举5的倍数,再逐位检查其中是否有数字5,满足条件就计数。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int n, cnt = 0;
        cin >> n;
        for (int i = 5; i <= n; i += 5) {
            int x = i;
            bool has5 = false;
            // 逐位检查这个数中是否出现数字5。
            while (x > 0) {
                if (x % 10 == 5) has5 = true;
                x /= 10;
            }
            // 能被5整除且含有数字5时,答案加一。
            if (has5) cnt++;
        }
        // cnt保存了从1到n中满足两个条件的整数个数。
        cout << cnt;
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、循环和字符串。设输入长度为 n,时间复杂度为 O(n^2)(若有嵌套枚举则按实际循环计算),额外空间复杂度为 O(n)。

    • 1