题解
【入门】能被5整除且至少有一位数字是5的所有整数的个数
1 条题解
-
0
解题思路
只枚举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