一个数 a 能使 \frac{1}{a} 化为有限不循环小数,当且仅当 a 的质因数只包含 2 和 5。以下是用 C++ 实现计算区间 [L,R] 内终止数数量的代码:

#include <iostream>
using namespace std;

int main() {
    int l, r;
    cin >> l >> r;
    int res = 0;
    for (int i = l; i <= r; ++i) {
        int x = i;
        while (x % 2 == 0) x /= 2;
        while (x % 5 == 0) x /= 5;
        res += x == 1;
    }
    cout << res << endl;
    return 0;
}

分析

  • 时间复杂度O(R-L+1),其中 R-L+1 是区间内整数的数量。
  • 空间复杂度O(1),只使用了常数级的额外空间。
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐