【二分+容斥+莫比乌斯反演】BZOJ2440 完全平方数
Description
求第k个没有完全平方因子的数,k<=1e9。
Solution
这其实就是要求第k个µ[i](莫比乌斯函数)不为0的数。
然而k太大数组开不下来是吧,于是这么处理。
二分答案x,问题转化为求[1,x]间有多少个没有完全平方因子的数。
容斥,加上全部,减去一个质数的平方的倍数个数,加上两个质数乘积的平方的倍数个数...
然后发现,每个数的系数就是µ
这也说明了莫比乌斯的原理就是容斥,µ函数就是容斥系数
具体来说,对于每一个i<=sqrt(x),对于ans的贡献就是µ[i]*int(n/(i*i))(向下取整)
有 于是二分上限2*k
复杂度为log(n)*sqrt(n)
Code
一开始直接mid=(l+r)>>1溢出T了一发
正确姿势mid=l>>1+r>>1+(l&r&1)
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn=5e4+; int mu[maxn],flag[maxn];
int prime[maxn],cnt; int getmu(){
mu[]=;
for(int i=;i<maxn;i++){
if(!flag[i]){
prime[++cnt]=i;
mu[i]=-;
}
for(int j=;i*prime[j]<maxn&&j<=cnt;j++){
flag[i*prime[j]]=;
if(i%prime[j]==){
mu[i*prime[j]]=;
break;
}
mu[i*prime[j]]=-mu[i];
}
}
} int work(int n){
int ret=;
for(int i=;i*i<=n;i++)
ret+=mu[i]*int(1.0*n/(i*i));
return ret;
} int main(){
int T,k;
scanf("%d",&T);
getmu(); while(T--){
scanf("%d",&k);
int l=,r=*k;
while(l<r){
int mid=(l>>)+(r>>)+(l&r&);
if(work(mid)>=k) r=mid;
else l=mid+;
}
printf("%d\n",l);
}
return ;
}
【二分+容斥+莫比乌斯反演】BZOJ2440 完全平方数的更多相关文章
- 51nod 1355 - 斐波那契的最小公倍数(Min-Max 容斥+莫比乌斯反演)
vjudge 题面传送门 首先我们知道斐波那契数列的 lcm 是不太容易计算的,但是它们的 gcd 非常容易计算--\(\gcd(f_x,f_y)=f_{\gcd(x,y)}\),该性质已在我的这篇博 ...
- cf900D. Unusual Sequences(容斥 莫比乌斯反演)
题意 题目链接 Sol 首先若y % x不为0则答案为0 否则,问题可以转化为,有多少个数列满足和为y/x,且整个序列的gcd=1 考虑容斥,设\(g[i]\)表示满足和为\(i\)的序列的方案数,显 ...
- bzoj 2005 & 洛谷 P1447 [ Noi 2010 ] 能量采集 —— 容斥 / 莫比乌斯反演
题目:bzoj 2005 https://www.lydsy.com/JudgeOnline/problem.php?id=2005 洛谷 P1447 https://www.luogu.org/ ...
- HDU 5942 Just a Math Problem 容斥 莫比乌斯反演
题意:\( g(k) = 2^{f(k)} \) ,求\( \sum_{i = 1}^{n} g(i) \),其中\( f(k)\)代表k的素因子个数. 思路:题目意思很简单,但是着重于推导和简化,这 ...
- Codeforces.547C.Mike and Foam(容斥/莫比乌斯反演)
题目链接 \(Description\) 给定n个数(\(1\leq a_i\leq 5*10^5\)),每次从这n个数中选一个,如果当前集合中没有就加入集合,有就从集合中删去.每次操作后输出集合中互 ...
- BZOJ4833: [Lydsy1704月赛]最小公倍佩尔数(min-max容斥&莫比乌斯反演)(线性多项式多个数求LCM)
4833: [Lydsy1704月赛]最小公倍佩尔数 Time Limit: 8 Sec Memory Limit: 128 MBSubmit: 240 Solved: 118[Submit][S ...
- 【BZOJ2440】完全平方数(二分答案,莫比乌斯反演)
[BZOJ2440]完全平方数(二分答案,莫比乌斯反演) 题面 BZOJ 题解 很显然,二分一个答案 考虑如何求小于等于这个数的非完全平方数倍数的个数 这个明显可以直接,莫比乌斯反演一下 然后这题就很 ...
- BZOJ 2440 [中山市选2011]完全平方数 二分+容斥
直接筛$\mu$?+爆算?再不行筛素数再筛个数?但不就是$\mu^2$的前缀和吗? 放...怕不是数论白学了$qwq$ 思路:二分+容斥 提交:两次(康了题解) 题解: 首先答案满足二分性质(递增), ...
- codeforces B. Friends and Presents(二分+容斥)
题意:从1....v这些数中找到c1个数不能被x整除,c2个数不能被y整除! 并且这c1个数和这c2个数没有相同的!给定c1, c2, x, y, 求最小的v的值! 思路: 二分+容斥,二分找到v的值 ...
随机推荐
- jquery-取消冒泡
1.通过返回false来取消默认的行为并阻止事件起泡. jQuery 代码: $("form").bind( "submit", function() { re ...
- jQuery插件学习基础
1.给jQuery添加全局的函数: $.zgz={ fn1:function(){ alert('我是刚设置的第一个全局函数') },fn2:function(){ alert('我是刚设置的第二个 ...
- 在 javascript 中,为什么 [1,2] + [3,4] 不等于 [1,2,3,4]?
在 stackoverflow 上有人提问:arrays - Why does [1,2] + [3,4] = "1,23,4" in JavaScript? 问题 我想将一个数组 ...
- py-oauth2包使用简记
接前两天线上项目py2升级py3的书,老廖的一个旧库snspy,他已经不维护了,用的api又比较久,不好升级,最后速度找了个OAuth库取代了它,由于时间紧张,直接在pypi上搜索了一下,找到这个支持 ...
- 基于one2team框架的Highcharts图表图片导出方案
这篇文章已经没有什么意义了,新版的HIghcharts提供Java图片导出解决方案,你需要做的就是下个Maven,bulid一个war就Ok了.---addedy on 2012-11-15 多说一句 ...
- Swift内部类调用外部类方法、属性的变通
Swift的内部类比较鸡肋,在内部类里面不能调用外部类的属性或方法,那么如何解决这个问题,把内部类里面调用外部类的那部分代码方法移动到外部类里面,成为外部类的方法,是一种变通解决方式.
- JSF-受管Bean与EL表达式
受管Bean与EL表达式 1)编写Bean:①有一个不带形参的构造方法 ②getXxx.setXxx ③一般要实现io.Serializable接口 2)声明受管Bean:①bean名称为外界访问其属 ...
- JS跨域:2.解决方案之-设置回调参数
一 服务器端代码 package com.cn; import java.util.List; import javax.servlet.http.HttpServletRequest; import ...
- Elasticsearch JavaApi
官网JavaApi地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search.html 博 ...
- Flex 对Xml对象操作
一.读取.xml文件() import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; ...