【BZOJ2440】完全平方数(二分答案,莫比乌斯反演)

题面

BZOJ

题解

很显然,二分一个答案

考虑如何求小于等于这个数的非完全平方数倍数的个数

这个明显可以直接,莫比乌斯反演一下

然后这题就很简单了

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<algorithm>
  7. #include<set>
  8. #include<map>
  9. #include<vector>
  10. #include<queue>
  11. using namespace std;
  12. #define MAX 100000
  13. inline int read()
  14. {
  15. int x=0,t=1;char ch=getchar();
  16. while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
  17. if(ch=='-')t=-1,ch=getchar();
  18. while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
  19. return x*t;
  20. }
  21. bool zs[MAX+1000];
  22. int mu[MAX+1000],pri[MAX+1000],tot;
  23. int n,g[MAX+1000];
  24. void Get()
  25. {
  26. zs[1]=true;mu[1]=1;
  27. for(int i=2;i<=MAX;++i)
  28. {
  29. if(!zs[i])pri[++tot]=i,mu[i]=-1;
  30. for(int j=1;j<=tot&&i*pri[j]<=MAX;++j)
  31. {
  32. zs[i*pri[j]]=true;
  33. if(i%pri[j])mu[i*pri[j]]=-mu[i];
  34. else {mu[i*pri[j]]=0;break;}
  35. }
  36. }
  37. }
  38. long long Work(long long k)
  39. {
  40. long long ret=0,l=sqrt(k);
  41. for(int i=1;i<=l;++i)ret+=1ll*mu[i]*k/(1ll*i*i);
  42. return ret;
  43. }
  44. int main()
  45. {
  46. int T=read();
  47. Get();
  48. while(T--)
  49. {
  50. long long K=read();
  51. long long l=1,r=1e10,ans=0;
  52. while(l<=r)
  53. {
  54. long long mid=(l+r)>>1;
  55. if(Work(mid)>=K)ans=mid,r=mid-1;
  56. else l=mid+1;
  57. }
  58. printf("%lld\n",ans);
  59. }
  60. return 0;
  61. }

【BZOJ2440】完全平方数(二分答案,莫比乌斯反演)的更多相关文章

  1. [中山市选2011][bzoj2440] 完全平方数 [二分+莫比乌斯容斥]

    题面 传送门 思路 新姿势get 莫比乌斯容斥 $\sum_{i=1}{n}\mu(i)f(i)$ 这个东西可以把所有没有平方质因子的东西表示出来,还能容斥掉重复的项 证明是根据莫比乌斯函数的定义,显 ...

  2. [BZOJ2440]完全平方数解题报告|莫比乌斯函数的应用

    完全平方数 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱.  这天是小X的生日 ...

  3. BZOJ 2440: [中山市选2011]完全平方数( 二分答案 + 容斥原理 + 莫比乌斯函数 )

    先二分答案m,<=m的有m-∑(m/pi*pi)+∑(m/pi*pi*pj*pj)-……个符合题意的(容斥原理), 容斥系数就是莫比乌斯函数μ(预处理)... ----------------- ...

  4. [bzoj2440]完全平方数(二分+mobius反演)

    解题关键:由容斥原理得,num=1的倍数的数量−一个质数平方数(9,25,49...)的倍数的数量+两个质数的积平方数(36,100,225...)的数量−三个质数...... 这道题用莫比乌斯的正向 ...

  5. 【BZOJ-2440】完全平方数 容斥原理 + 线性筛莫比乌斯反演函数 + 二分判定

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2371  Solved: 1143[Submit][Sta ...

  6. 【二分+容斥+莫比乌斯反演】BZOJ2440 完全平方数

    Description 求第k个没有完全平方因子的数,k<=1e9. Solution 这其实就是要求第k个µ[i](莫比乌斯函数)不为0的数. 然而k太大数组开不下来是吧,于是这么处理. 二分 ...

  7. [bzoj2440]完全平方数[中山市选2011][莫比乌斯函数][线性筛][二分答案]

    题意:求第k个分解质因子后质因子次数均为一的数,即求第k个无平方因子数. 题解: 首先二分答案mid,那么现在就是要求出mid以内的无平方因子数的个数. 其次枚举$\sqrt{mid}$内的所有质数, ...

  8. BZOJ 2440 完全平方数(莫比乌斯反演+二分查找)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23362 题意:定义含有平方数因子的数为完全平方数(平方数因子不包含 ...

  9. 2019.02.09 bzoj2440: [中山市选2011]完全平方数(二分答案+容斥原理)

    传送门 题意简述:qqq次询问(q≤500)(q\le500)(q≤500),每次问第kkk个不被除111以外的完全平方数整除的数是多少(k≤1e9)(k\le1e9)(k≤1e9). 思路:考虑二分 ...

随机推荐

  1. [Python Study Notes]Socket模拟ssh执行cmd并记录遇到的问题

    服务器端: 流程: 1.创建servert实例 2.绑定地址和端口 3.开始监听 4.创建客户端连接实例 5.等待客户端的消息 6.......... # The_author = 'liu66' # ...

  2. SSE图像算法优化系列十七:一些图像处理中常用小过程的SSE实现。

    在做图像处理的SSE优化时,也会经常遇到一些小的过程.数值优化等代码,本文分享一些个人收藏或实现的代码片段给大家. 一.快速求对数运算 对数运算在图像处理中也是个经常会遇到的过程,特备是在一些数据压缩 ...

  3. centos7 网桥的配置

    centos7下配置网桥,两个步骤:1.新建网桥配置2.修改网卡配置 新建br0 网桥配置 在/etc/sysconfig/network-scripts/目录下新建ifcfg-br0,添加如下配置信 ...

  4. js分页功能实现

    实现一个js的分页并在弹出框中显示 1.分页插件使用:bootstarp-paginator.js,需要先引入bootstarp.js和jquery.js等: !function($){"u ...

  5. 表的操作(Oracle和DB2)

    asc和desc 分别表示升序和降序 select * from tablename order by id desc :根据id字段按照降序排列,从大到小 select * from tablena ...

  6. 机器学习之支持向量机(四):支持向量机的Python语言实现

    注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...

  7. js获取某个日期所在周周一的日期

    第一次写,做个小笔记. 第一步:获取该日期的星期数: 第二步:在该日期上减去他的星期数再减1,(注:星期日获取到的星期数是0): 下面是具体代码: function GetMonday(dd) { v ...

  8. ErrorKiller:Failed to decode response: zlib_decode(): data error

    先更新composer自己,composer self-update 然后再更新依赖关系 composer update

  9. Yii小部件

    小部件 Yii提供了一套数据小部件widgets,这些小部件可以用于显示数据. DetailView小部件用于显示一条记录数据. ListView和GridView小部件能够用于显示一个拥有分页.排序 ...

  10. Qt 如何使用 lambda 表达式连接信号和槽?

    connect(camera, static_cast<void(QCamera::*)(QCamera::LockStatus, QCamera::LockChangeReason)>( ...