BZOJ 2440 完全平方数
来源:互联网 发布:mac上查找我的iphone 编辑:程序博客网 时间:2024/05/22 00:12
题目大意:求第k个无平方因子数
这道题需要先进行二分答案,[1…x]内的无平方因子的数。
然后根据容斥原理可得,ans=0个质数之积的平方的倍数个数-1个质数之积的平方的倍数个数+2个质数之积的平方的倍数个数….
然后可以得到对于每一个数i,它前面的系数正好等于它的莫比乌斯函数值。
其实此题与莫比乌斯反演没有关系,只是一个莫比乌斯函数的应用而已。
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define MAXN 100005using namespace std;int n;long long miu[MAXN],prime[MAXN];void work(){ miu[1]=1; int cnt=0; bool check[MAXN]; memset(check,0,sizeof check); for(int i=2;i<=MAXN;i++) { if(!check[i]) { miu[i]=-1; prime[++cnt]=i; } for(int j=1;j<=cnt;j++) { if(i*prime[j]>MAXN) break; check[i*prime[j]]=1; if(i%prime[j]==0) { miu[i*prime[j]]=0; break; } miu[i*prime[j]]=miu[i]*miu[prime[j]]; } }}long long num(int x){ long long ans=0; for(int i=1;i<=sqrt(x);i++) { ans+=miu[i]*(x/(i*i)); } return ans;}long long work(int x){ long long l=0,r=x*2; while(r-l>1) { long long mid=(l+r)/2; if(num(mid)<x) l=mid; else r=mid; } return r;}int main(){ work(); int T; scanf("%d",&T); while(T--) { scanf("%d",&n); printf("%lld\n",work(n)); }}
阅读全文
0 0
- BZOJ 2440 完全平方数
- BZOJ 2440 完全平方数
- BZOJ 2440 完全平方数
- 完全平方数 BZOJ
- bzoj/hysbz-2440-完全平方数
- bzoj 2440: [中山市选2011]完全平方数
- BZOJ系列2440《[中山市选2011]完全平方数》题解
- 【bzoj 2440】: [中山市选2011]完全平方数
- [莫比乌斯函数]BZOJ 2440 完全平方数
- BZOJ 2440: [中山市选2011]完全平方数
- BZOJ 2440 完全平方数-莫比乌斯函数
- bzoj 2440: [中山市选2011]完全平方数
- 完全平方数 [Bzoj 2440,中山市选2011]
- BZOJ 2440 [中山市选2011]完全平方数
- BZOJ 2440: [中山市选2011]完全平方数
- bzoj 2440: [中山市选2011]完全平方数
- BZOJ 2440 [中山市选2011] 完全平方数
- BZOJ 2440 [中山市选2011]完全平方数
- python日志logging
- Google V8 引擎
- 第一次作业
- 支持向量回归
- 调用Process.waitfor导致的进程挂起
- BZOJ 2440 完全平方数
- BZOJ 2527 [Poi2011]Meteors [整体二分+线段树]
- win10设置PPTP VPN连接流程---解决链接被远程计算机终止导致连接失败的问题
- 项目开发个人心得报告
- CNTK API文档翻译(8)——使用Pandas和金融数据进行时序数据基本分析
- Linux文件类型及命令补充
- 自定义View----总结
- 《Linux内核设计与实现》读书笔记(六)- 内核数据结构
- 关于线程的常见问题