题意描述

 原题

  

 一句话描述:

  求第K个不是完全平方数的倍数的数。

  K≤$10^{9}$

------------------------------------------

题解:

  首先,直接求第$k$个不是完全平方数倍数的数不好求,我们不妨将它转换为一个判定问题:对于一个确定的常数$x$,他是不是第k个不是完全平方数倍数的数。这句话等价于:$[1,x]$是否有k个不是完全平方数倍数的数,这个怎么求呢?

  根据容斥原理,答案就是:0个质数乘积的平方的倍数的数量(1的倍数)- 1个质数乘积的平方的倍数的数量(4,9,25的倍数)+ 2个质数乘积的平方的倍数的数量(36,100的倍数)。

  恰好发现,$i^2$对应的符号就是$μ(i)$,所以答案就是

   那么我们二分一下$x$,就能找到答案了。二分的范围是$[1,k*2]$.

  代码实现:

  

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
const int maxn = 1e6+;
typedef long long ll;
int mu[maxn],prime[maxn],vis[maxn];
void init_mu(int n){
int cnt=;
mu[]=;
for(int i=;i<n;i++){
if(!vis[i]){
prime[cnt++]=i;
mu[i]=-;
}
for(int j=;j<cnt&&i*prime[j]<n;j++){
vis[i*prime[j]]=;
if(i%prime[j]==) {mu[i*prime[j]]=;break;}
else { mu[i*prime[j]]=-mu[i];}
}
}
}
inline ll find(ll x) {
ll least = sqrt(x+0.5),ans=;
for(register int i=;i<=least;i++) {
ans+=mu[i]*x/(1LL*i*i);
}
return ans;
}
inline ll calc(ll k) {
ll l = ,r = k<<;
while(l<r) {
ll mid = (r+l)>>;
ll temp = find(mid);
#ifdef DEBUG
printf("%d %d %d\n",l,r,temp);
#endif
if(temp<k) l=mid+;
else r=mid;
}
return r;
}
int T;
ll k;
int main() {
init_mu();
scanf("%d",&T);
while(T--) {
scanf("%lld",&k);
printf("%lld\n",calc(k));
}
return ;
}

【BZOJ2440】[中山市选2011]完全平方数的更多相关文章

  1. BZOJ2440: [中山市选2011]完全平方数(莫比乌斯+容斥原理)

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

  2. BZOJ2440 中山市选2011完全平方数(容斥原理+莫比乌斯函数)

    如果能够知道不大于n的合法数有多少个,显然就可以二分答案了. 考虑怎么求这个.容易想到容斥,即枚举完全平方数.我们知道莫比乌斯函数就是此种容斥系数.筛出来就可以了. 注意二分时会爆int. #incl ...

  3. BZOJ2440 [中山市选2011]完全平方数

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

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

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

  5. BZOJ2440:[中山市选2011]完全平方数(莫比乌斯函数)

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

  6. 题解【bzoj2440 [中山市选2011]完全平方数】

    Description 求第 \(k\) 个不含平方因子的正整数.多组询问.\(k \leq 10^9, T \leq 50\) Solution 网上的题解几乎都是容斥,这里给一个简单的也挺快的做法 ...

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

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2440 莫比乌斯...被难倒... 看TJ:http://hzwer.com/4827.htm ...

  8. BZOJ2440: [中山市选2011]完全平方数 容斥原理_莫比乌斯函数

    emmm....... 数学题都不友好QAQ...... Code: #include <cstdio> #include <algorithm> #include <c ...

  9. 【学术篇】bzoj2440 [中山市选2011]完全平方数

    -题目の传送门- 题目大意: 找到第k个无平方因子数. 看到数据范围很大, 我们要采用比\(O(n)\)还要小的做法. 考虑如果前\(x\)个数中有\(k-1\)个无平方因子数, 而前\(x+1\)个 ...

  10. BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]

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

随机推荐

  1. VLC播放RTSP视频延迟问题 (转)

    原帖地址:http://blog.chinaunix.net/uid-26611383-id-3755283.html ======================================== ...

  2. kubelet disk 压力

    systemctl stop docker mv /var/lib/docker /data/lib ln -s /data/lib/docker /var/lib/docker systemctl ...

  3. 新手C#类、对象、字段、方法的学习2018.08.05

    类:具有相似属性和方法的对象的集合,如“人”是个类. 对象(实例):对象是具体的看得见摸得着的,如“张三”是“人”这个类的对象.(new Person()开辟了堆空间中,=开辟了栈空间,变量P存放在该 ...

  4. mapreduce of hadoop

    [mapreduce of hadoop] 1. MapReduce作业(Job)是客户端想要执行的一个作单元, 它包括: 输入数据, MapReduce程序, 配置信息. 2. Hadoop将作业成 ...

  5. nSum “已知target再求和”类型题目总结:n-2重循环+left/right

    Sum类的题目一般这样: input: nums[], target output: satisfied arrays/ lists/ number 拿到题目,首先分析: 1. 是几个数的sum 2. ...

  6. Get The Client Info From PHP SERVER Arrary

    Get The Client Info From PHP SERVER Arrary <?php date_default_timezone_set( "Asiz/Shanghai&q ...

  7. 尝试编写的rabbitmq+spring 框架

    spring有自己的一套框架与消息队列结合使用http://projects.spring.io/spring-amqp/,这个接下来会好好的研究一下. 在领导的帮助下,终于勉强写完了这个消息队列的框 ...

  8. struts2 action result type类型

    struts2 action result type类型 1.chain:用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息. com.opensymphony. ...

  9. foo是什么?

    在英文程序员社区里,foo bar baz这些词是常用于作为占位符而使用的.要查wiki的话,这项更合适:http://en.wikipedia.org/wiki/Metasyntactic_vari ...

  10. [operator]windows10 + zookeeper + kafka

    软件版本 jdk-8u131-windows-x64 zookeeper-3.4.10.tar.gz kafka_2.11-2.0.1.tgz jdk直接就有exe安装版本,不做介绍 安装zookee ...