题目背景
对应的选择、判断题:试题 - GESP 202603 C++ 五级 - 洛谷有题
题目描述
若 a1 可化为一个有限的,不循环的小数,则称 a 为终止数。
请你求出在 L 到 R 中终止数的数量。
输入格式
输入一行,包含两个整数 L,R。
输出格式
输出一行,包含一个整数,表示 L 到 R 中终止数的数量。
输入输出样例
输入 #1复制
2 11
输出 #1复制
5
说明/提示
样例解释
在 2,11 终止数有 2、4、5、8、10。
数据范围
保证 1≤L≤R≤106。
代码实现:
cpp
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int L, R;
cin >> L >> R;
unordered_set<long long> s;
long long p2 = 1;
for (int a = 0; ; a++)
{
if (p2 > R) break;
long long p5 = 1;
for (int b = 0; ; b++)
{
long long val = p2 * p5;
if (val > R) break;
s.insert(val);
p5 *= 5;
}
p2 *= 2;
}
int ans = 0;
for (auto v : s)
{
if (v >= L && v <= R) ans++;
}
cout << ans << '\n';
return 0;
}