题目链接

总感觉博客园的\(Markdown\)很。。\(gouzhi\),可以看这的


题意即求第\(k\)个无平方因子数。

无平方因子数(Square-Free Number),即分解之后所有质因数的次数都为1的数

可以想到莫比乌斯函数,假设\(n\)是答案,那么有$$k=n-\sum_{i=1}^n(1-|\mu(i)|)$$

(从这里能看出\(x\)的上界,后面的\(\sum\)肯定是\(<\frac{n}{2}\)的,所以\(n\leq 2*k\))

二分一个\(n\),求\([1,n]\)中有多少个无平方因子数。

既然带着个平方就都开方。根据容斥,对于\([1,\sqrt{n}]\)中的质数,答案为$$[1,n]中0个质数平方倍数的个数-1个质数平方倍数的个数+2个质数平方倍数的个数-\ldots$$

即对于奇数个质数平方贡献为负,偶数个贡献为正,枚举这些质因子。若存在某个质因子的次数\(>1\),那么对答案没有影响(如\(pi^2*pj^2\)在计算\(pi*pj\)时统计了个数)。这也符合莫比乌斯函数的特点。那么答案可以写为:$$\sum_{i=1}{\lfloor\sqrt{n}\rfloor}\mu(i)*\lfloor\frac{n}{i2}\rfloor$$

也可以整除分块... 右端点是这样的:\(r=\sqrt{\frac{n}{n/i^2}}\)。

\(r\)最大是\(2e9\),所以\(l+r\)可能爆int!

就我被这个坑朝了吧。。

//1308kb	2148ms
#include <cmath>
#include <cstdio>
const int N=5e4; int cnt,P[10005],mu[N+3],pw[N+3];
bool Not_P[N+3]; void Init()
{
mu[1]=1;
for(int i=2; i<N; ++i)
{
if(!Not_P[i]) P[++cnt]=i,mu[i]=-1;
for(int j=1; j<=cnt&&i*P[j]<N; ++j)
{
Not_P[i*P[j]]=1;
if(i%P[j]) mu[i*P[j]]=-mu[i];
else {mu[i*P[j]]=0; break;}
}
}
for(int i=1; i<N; ++i) pw[i]=i*i;
}
bool Check(long long n,int K)
{
int res=0;//res=n
for(int i=1,lim=sqrt(n); i<=lim; ++i)
if(mu[i]/*这个?*/) res+=mu[i]*(n/pw[i]);
return res>=K;
} int main()
{
Init();
int T,K; scanf("%d",&T);
long long l,r,mid;//!
while(T--)
{
scanf("%d",&K), l=1, r=K<<1;
while(l<r)
if(Check(mid=(l+r)>>1,K)) r=mid;
else l=mid+1;
printf("%lld\n",l);
}
return 0;
}

BZOJ.2440.[中山市选2011]完全平方数(莫比乌斯函数 二分)的更多相关文章

  1. BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数

    BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数 题面 找出第k个不是平方数的倍数的数(1不是平方数, \(k \le 10^9\)). 题解 首先二分答案,问题就转化成了求\([ ...

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

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MB Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平 ...

  3. BZOJ 2440 [中山市选2011]完全平方数 ——莫比乌斯函数

    $\sum_{i=1}^n[i==d^2*p]$ 其中p无平方因子$=\sum_{d^2\mid n,d>=2}\sum_{i=1}^{\lfloor {n/d^2} \rfloor} \lef ...

  4. BZOJ 2440 [中山市选2011]完全平方数 (二分 + 莫比乌斯函数)

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

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

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

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

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

  7. [BZOJ 2440] [中山市选2011] 完全平方数 【二分 + 莫比乌斯函数】

    题目链接:BZOJ - 2440 题目分析 首先,通过打表之类的方法可以知道,答案不会超过 2 * k . 那么我们使用二分,对于一个二分的值 x ,求出 [1, x] 之间的可以送出的数有多少个. ...

  8. bzoj 2440: [中山市选2011]完全平方数【莫比乌斯函数+二分】

    二分答案,然后用莫比乌斯函数作为容斥系数,计算当前枚举的mid内有几个满足要求的数 #include<iostream> #include<cstdio> #include&l ...

  9. bzoj 2440: [中山市选2011]完全平方数

    #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #defin ...

随机推荐

  1. TCP和IP的三次握手和第四次挥手

    TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确 ...

  2. 实现vue2.0响应式的基本思路

    最近看了vue2.0源码关于响应式的实现,以下博文将通过简单的代码还原vue2.0关于响应式的实现思路. 注意,这里只是实现思路的还原,对于里面各种细节的实现,比如说数组里面数据的操作的监听,以及对象 ...

  3. elementUI 表格分页后台排序记录

    表格代码 <div class="m-table"> <el-table :data="logs" style="width: 10 ...

  4. 高并发数据库之MySql性能优化实战总结

    向MySQL发送一个请求时MySQL具体的操作过程 慢查询 1.慢查询 SHOW VARIABLES LIKE '%quer%' 索引优化技巧 1.对于创建的多列索引(复合)索引,只要查询条件使用了最 ...

  5. 20155339 2016-2017-2 《Java程序设计》第5周学习总结

    20155339 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 使用try.catch 使用try.catch语法,JVM会先尝试执行try区块中的代码,如 ...

  6. Linux 并发链接数

    并发数查看   查看 TCP 协议连接数 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' SYN_RECV # ...

  7. Linux - Port 端口检测方式

    ss 和 netstat 区别 netstat是遍历/proc下面每个PID目录: ss直接读/proc/net下面的统计信息. 所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多 ne ...

  8. VS 多工程代码编写

    VS工作目录,输出目录 C++项目,解决方案总文件夹下就只包含解决方案配置文件sln和一个项目总文件夹和一个Debug文件夹以及一个Release文件夹(共四个东东,其中Debug和Release文件 ...

  9. c++ 函数指针简单实例

    一开始看函数指针的时候我是很懵的,因为不知道它有什么用,之后慢慢就发现了自己的愚昧无知. 假设我们想实现一个数据结构,比如二叉搜索树,堆.又或者是一个快排,归并排序. 我们一般是直接在两个数要比较的时 ...

  10. linux下搭建我的世界spongeforge 服务器 (海绵端)

    以下我用的都是1.10.2版本 且以下用的服务器连接管理软件有WinSCP.Xshell 5 首先,去下载一个MC1.10.2的纯净服务端,这个不会很难,百度一下! 比如我下的文件就叫minecraf ...