题意:找到第k个无平方因子数。

解法:这道题非常巧妙的运用了莫比乌斯函数的性质!

解法参考https://www.cnblogs.com/enzymii/p/8421314.html这位大佬的。这里我说下自己的理解:

首先看到K这么大,想到可能要二分答案。那么我们二分答案M,问题就变成计算<=M的数有多少个无平方因子数。

我们考虑这样一个算法:枚举<=M的每一个无平方因子数,然后枚举它的倍数将其去掉。但是这个方法有一个问题就是会重复删除,例如一个数 2*3*5 ,他会被2/3/5分别删除一次,然后又会被2*3/2*5/3*5删除(等等)......处理这种重复问题我们一般会采用容斥原理。

于是我们想办法  -一个因子倍数+两个因子倍数-三个因子倍数.......   ; 想上诉的2*3*5, -(2/3/5)+(2*3/2*5/3*5)-(2*3*5)=  -1  。这样我们就解决了重复问题!!!

那么再仔细观察这个系数,奇数个质因子的无平方数系数是-1,偶数个质因子的无平方数的系数是1,这不就是莫比乌斯函数!!!

于是我们得到了式子:

于是此题可解了:

 #include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e5+;
const int Pr=1e5;
int K; bool vis[N];
int tot=,pri[N]; LL mu[N];
void prework() {
vis[]=; mu[]=;
for (int i=;i<=Pr;i++) {
if (!vis[i]) pri[++tot]=i,mu[i]=-;
for (int j=;j<=tot&&i*pri[j]<=Pr;j++) {
int k=i*pri[j]; vis[k]=;
if (i%pri[j]==) {
mu[k]=; break;
}
mu[k]=-mu[i];
}
}
} bool check(LL M) {
LL i=,j,ret=;
for (int i=;i*i<=M;i++) ret+=mu[i]*(M/(i*i));
return ret>=K;
} int main()
{
prework();
int T; cin>>T;
while (T--) {
scanf("%d",&K);
LL L=,R=*K;
while (L<R) {
LL M=(L+R)/;
if (check(M)) R=M; else L=M+;
}
printf("%lld\n",R);
}
return ;
}

最新文章

  1. 【JAVA线程间通信技术】
  2. java jfinal + ajaxfileupload.js 上传
  3. Objective-C中的const ,extern,static
  4. The underlying provider failed on Open. EF
  5. [认知]ClassLoader 认知一二三
  6. 重载 C 函数
  7. KVM内核文档阅读笔记
  8. Linux 文件系统(一)---虚拟文件系统VFS----超级块、inode、dentry、file
  9. docker镜像运行错误排查
  10. 今天刚学到truncate和delete的区别,做个总结吧
  11. chrome 自动加载flash
  12. 理解 Generator 的执行
  13. python3之安装、pip、setuptools
  14. mysql 导出sql结果成csv文件
  15. 用C++画光(三)&mdash;&mdash;色散
  16. 如何创建一个自己的.NET Core Global Tools
  17. 使用第三方库iOS-ECharts做柱状图的心得
  18. Standard - 多线程基本概念面试题待整理
  19. 二维纹理 Texture 2D
  20. 图片转成base64, base64转成图片

热门文章

  1. 51nod1584加权约数和
  2. 利用python进行数据分析--pandas入门1
  3. Activity和Fragment生命周期对比
  4. wap开发tips
  5. uva live 7638 Number of Connected Components (并查集)
  6. Linux 用户必须知道的 14 个常用 Linux 终端快捷键
  7. 几个FFmpeg 视频参数 fps、tbr、tbn、tbc
  8. linux中的&quot;空白字符&quot;
  9. @TableLogic表逻辑处理注解(逻辑删除)
  10. javamail 附件以及正文加图片