【整体二分+莫比乌斯函数+容斥原理】BZOJ2440
【题目大意】
求第k个不是完全平方数或完全平方数整数倍的数。
【思路】

由于μ(i)*(n/i^2)=n,可以直接从1开始,得出非完全平方数/完全平方数倍数的数的个数

注意一下二分的写法,这里用的是我一直比较喜欢的一种二分写法:
int lb=下界-1,ub=上界
while (ub-lb>1)
{
int mid=(lb+ub)>>1;
if (a[mid]>=k) ub=mid; else lb=mid;
}
ans=ub;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll MAXN=+;
const ll INF=0x7fffffff;
int T;
ll k;
int miu[MAXN];
ll prime[MAXN];
int pnum=; void get_miu()
{
for (int i=;i<MAXN;i++) miu[i]=-INF;
miu[]=;
for (int i=;i<MAXN;i++)
{
if (miu[i]==-INF)
{
miu[i]=-;
prime[++pnum]=i;
}
for (int j=;j<=pnum;j++)
{
if (i*prime[j]>=MAXN) break;
if (i%prime[j]==) miu[i*prime[j]]=;
else miu[i*prime[j]]=-miu[i];
}
}
} ll square(ll x)
{
ll res=;
for (int i=;i*i<=x;i++) res+=miu[i]*(x/(i*i));
return res;
} ll get_ans()
{
ll lb=-,ub=MAXN*MAXN;
while (ub-lb>)
{
ll mid=(lb+ub)>>;
ll nowk=square(mid);
if (nowk>=k) ub=mid;
else lb=mid;
}
return ub;
} int main()
{
get_miu();
scanf("%d",&T);
for (int i=;i<T;i++)
{
scanf("%lld",&k);
printf("%lld\n",get_ans());
}
return ;
}
【整体二分+莫比乌斯函数+容斥原理】BZOJ2440的更多相关文章
- Bzoj 2440: [中山市选2011]完全平方数(莫比乌斯函数+容斥原理+二分答案)
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MB Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平 ...
- [BZOJ 2440] [中山市选2011] 完全平方数 【二分 + 莫比乌斯函数】
题目链接:BZOJ - 2440 题目分析 首先,通过打表之类的方法可以知道,答案不会超过 2 * k . 那么我们使用二分,对于一个二分的值 x ,求出 [1, x] 之间的可以送出的数有多少个. ...
- BZOJ 2440 [中山市选2011]完全平方数 (二分 + 莫比乌斯函数)
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4805 Solved: 2325[Submit][Sta ...
- 【BZOJ 2440】【中山市选 2011】完全平方数 莫比乌斯函数+容斥原理
网上PoPoQQQ的课件: •题目大意:求第k个无平方因子数 •无平方因子数(Square-Free Number),即分解之后所有质因数的次数都为1的数 •首先二分答案 问题转化为求[1,x]之间有 ...
- 【BZOJ 2986】 莫比乌斯函数+容斥原理
2986: Non-Squarefree Numbers Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 337 Solved: 156 Descri ...
- BZOJ2440 中山市选2011完全平方数(容斥原理+莫比乌斯函数)
如果能够知道不大于n的合法数有多少个,显然就可以二分答案了. 考虑怎么求这个.容易想到容斥,即枚举完全平方数.我们知道莫比乌斯函数就是此种容斥系数.筛出来就可以了. 注意二分时会爆int. #incl ...
- 【BZOJ 2440】 2440: [中山市选2011]完全平方数 (二分+容斥原理+莫比乌斯函数)
2440: [中山市选2011]完全平方数 Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数 ...
- [bzoj2440]完全平方数[中山市选2011][莫比乌斯函数][线性筛][二分答案]
题意:求第k个分解质因子后质因子次数均为一的数,即求第k个无平方因子数. 题解: 首先二分答案mid,那么现在就是要求出mid以内的无平方因子数的个数. 其次枚举$\sqrt{mid}$内的所有质数, ...
- BZOJ 2440: [中山市选2011]完全平方数( 二分答案 + 容斥原理 + 莫比乌斯函数 )
先二分答案m,<=m的有m-∑(m/pi*pi)+∑(m/pi*pi*pj*pj)-……个符合题意的(容斥原理), 容斥系数就是莫比乌斯函数μ(预处理)... ----------------- ...
随机推荐
- tyvj1305 最大子序和(单调队列
题目地址:http://www.joyoi.cn/problem/tyvj-1305 最大子序和 题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Loc ...
- 关于JAVA正则匹配空白字符的问题(全角空格与半角空格)
今天遇到一个字符串,怎么匹配空格都不成功!!! 我把空格复制到test.properties文件 显示“\u3000” ,这是什么? 这是全角空格!!! 查了一下 \s 不支持全角 1.& ...
- 数据结构之DFS与BFS
深度搜索(DFS) and 广度搜索(BFS) 代码如下: #include "stdafx.h" #include<iostream> #include<st ...
- MAC电脑密码破解
[第一个方法] 开机,启动时按cmd+S,进入Single User Mode,出现像DOS一样的提示符#root> 在#root>下输入(注意空格,大小写) fsck -y moun ...
- vivo面试学习3(git和svn的区别)
git和svn有什么区别? svn: 系统特点: 1).集中式版本控制系统(存在一个中央版本库,所有开发人员所使用的代码都是来源于版本库,提交代码也是这个中央版本库) 2).企业内部并行集中开发 3) ...
- 滑杆(JSlider)和进度指示条(JProgressBar) 的使用
package first; import javax.swing.*; import javax.swing.border.TitledBorder; import java.awt.*; impo ...
- LeetCode 4 :Majority Element
problem:Given an array of size n, find the majority element. The majority element is the element tha ...
- 使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理【转】
转自:https://www.qcloud.com/community/article/598765?fromSource=gwzcw.117333.117333.117333 这是<使用腾讯云 ...
- 前段基础JavaScript
JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.( ...
- 安装smartmontool报错:libc6-dev : 破坏:
https://blog.csdn.net/weixin_38705903/article/details/81947717