A34180.智能计算器题解(补思路)
2025-08-02 13:52:08
发布于:浙江
50阅读
0回复
0点赞
注意到一个数末尾 的个数就是它 因子的个数,将 分解质因数,得 ,因子 很多,不需要考虑,只需要考虑 中因子 的个数。
所以我们预处理一个数因子 的个数,再求前缀和,就能得到 中因子 的个数。
然后二分就能求出所有满足条件的数。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[1000100],s[1000100];
signed main()
{
int m;
cin>>m;
for(int i=1;i<=7;i++)
{
int x=pow(5,i);
for(int j=x;j<=1000050;j+=x)a[j]++;
}
for(int i=1;i<=1000050;i++)s[i]=s[i-1]+a[i];
int l=lower_bound(s,s+1000050,m)-s;
int r=upper_bound(s,s+1000050,m)-s;
cout<<r-l<<endl;
for(int i=l;i<r;i++)cout<<i<<' ';
return 0;
}
全部评论 2
啊雷个累我
5小时前 来自 浙江
0%%%
4小时前 来自 浙江
0
我累个雷啊
2024-11-24 来自 广东
0%%%
4小时前 来自 浙江
0
有帮助,赞一个