BZOJ2440/洛谷P4318 [中山市选2011]完全平方数 莫比乌斯函数
题意:找到第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 ;
- }
BZOJ2440/洛谷P4318 [中山市选2011]完全平方数 莫比乌斯函数的更多相关文章
- BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数
BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数 题面 找出第k个不是平方数的倍数的数(1不是平方数, \(k \le 10^9\)). 题解 首先二分答案,问题就转化成了求\([ ...
- Bzoj 2440: [中山市选2011]完全平方数(莫比乌斯函数+容斥原理+二分答案)
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MB Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平 ...
- BZOJ2440:[中山市选2011]完全平方数(莫比乌斯函数)
Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱. 这天是 ...
- BZOJ.2440.[中山市选2011]完全平方数(莫比乌斯函数 二分)
题目链接 总感觉博客园的\(Markdown\)很..\(gouzhi\),可以看这的. 题意即求第\(k\)个无平方因子数. 无平方因子数(Square-Free Number),即分解之后所有质因 ...
- 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 ...
- BZOJ2440: [中山市选2011]完全平方数(莫比乌斯+容斥原理)
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4920 Solved: 2389[Submit][Sta ...
- 【bzoj2440】[中山市选2011]完全平方数 莫比乌斯反演
Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱.这天是小 ...
- bzoj2440 [中山市选2011]完全平方数——莫比乌斯+容斥
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2440 莫比乌斯...被难倒... 看TJ:http://hzwer.com/4827.htm ...
- BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3028 Solved: 1460[Submit][Sta ...
随机推荐
- spring- junit测试事务回滚
http://blog.csdn.net/molingduzun123/article/details/49383235
- IDEA简单破解激活操作流程(我在用的)
其实简单的,你需要下一个包,将他放入你的IDEA安装目录的bin下,如下下图 下载地址:https://pan.baidu.com/s/1aJDefDGmfYGrkcJCpZYccA 看到红线的地方了 ...
- .bash_profile vs .bashrc
w http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html
- 内存地址 Memory Management
Memory Management https://docs.python.org/2/c-api/memory.html Memory management in Python involves a ...
- Delphi XE2 之 FireMonkey 入门(19) - TFmxObject 的子类们(表)
参考: 和 FMX 相关的类(表) TFmxObject IFreeNotification TAnimation TBitmapAnimation TBi ...
- Delphi XE2 之 FireMonkey 入门(7) - TText 与 TFont
TText 也是从 TShape(TControl -> TShape)继承; 而与之类似的 TLabel 的继承序列是 TControl -> TStyledControl -> ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_03 过滤器_2_FileNameFilter过滤器的使用和Lambda表达式
复制一份上一节的代码 匿名内部类的形式 FilenameFilter 只有一个Accept方法.这样我们就可以使用lambda表达式 lambda表达式的前提条件 参数类型和,返回的大括号 都可以省掉 ...
- shift()函数
用于对dataframe中的数整体上移或下移, 当为正数时,向下移. 当为负数时,向上移. 缺少的会填充NaN 参考: https://blog.csdn.net/kizgel/article/det ...
- linux 软连接的使用
软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接. 具体用法是:ln -s 源文件 目标文件. 当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需 ...
- python每日一练:0004题
第 0004 题: 任一个英文的纯文本文件,统计其中的单词出现的个数. import re count = 0 with open('./EnglishText.txt','r') as f: tem ...