bzoj 2440 完全平方数 【莫比乌斯函数】
题意:第Ki 个不是完全平方数的正整数倍的数。
对于一个数t,t以内的数里的非完全平方数倍数的个数:num=1的倍数的数量−一个质数平方数(9,25,49...)的倍数的数量+两个质数的积平方数(36,100,225...)的数量−三个质数balabala……
所以 (然而这一坨是怎么推出来的呢?)
u(i)就是莫比乌斯函数
求莫比乌斯函数代码:
//递推
ll mu[100005];
void mobius(ll mn)
{
mu[1]=1;
for(ll i=1;i<=mn;i++){
for(ll j=i+i;j<=mn;j+=i){
mu[j]-=mu[i];
}
}
}
//main
mobius(100000);
//线性筛法求莫比乌斯函数
bool check[MAXN+10];
int prime[MAXN+10];
int mu[MAXN+10];
void Moblus()
{
memset(check,false,sizeof(check));
mu[1] = 1;
int tot = 0;
for(int i = 2; i <= MAXN; i++)
{
if( !check[i] ){
prime[tot++] = i;
mu[i] = -1;
}
for(int j = 0; j < tot; j++)
{
if(i * prime[j] > MAXN) break;
check[i * prime[j]] = true;
if( i % prime[j] == 0){
mu[i * prime[j]] = 0;
break;
}else{
mu[i * prime[j]] = -mu[i];
}
}
}
}
所以代码:
#include <cstdio>
#include <cmath>
typedef long long ll;
const ll M=100001;
ll t,n,miu[M],pri[M],bo[M],ans;
void makemiu(){
miu[1]=1;
for (ll i=2;i<M;i++){
if (!bo[i]){
pri[++pri[0]]=i;
miu[i]=-1;
}
for (ll j=1;j<=pri[0] && pri[j]*i<M;j++){
bo[i*pri[j]]=1;
if (i%pri[j]==0){
miu[i*pri[j]]=0;
break;
}else miu[i*pri[j]]=-miu[i];
}
}
}
ll check(ll t){
ll sq=(int)sqrt(t),res=0;
for (ll i=1;i<=sq;i++)
res=res+miu[i]*(t/(i*i));
return res;
}
ll getans(ll t){
ll l=0,r=t*2,mid;
while (l+1<r){
mid=(l+r)/2;
if (check(mid)<t) l=mid;
else r=mid;
}
return r;
}
int main(){
scanf("%I64d",&t);
makemiu();
for (ll i=1;i<=t;i++){
scanf("%I64d",&n);
printf("%I64d\n",getans(n));
}
}
bzoj 2440 完全平方数 【莫比乌斯函数】的更多相关文章
- bzoj 2440 (莫比乌斯函数)
bzoj 2440 完全平方数 题意:找出第k个不是完全平方数的正整数倍的数. 例如 4 9 16 25 36什么的 通过容斥原理,我们减去所有完全数 4有n/4个,但是36这种会被重复减去, ...
- BZOJ 2440 完全平方数(莫比乌斯反演,容斥原理)
http://www.lydsy.com/JudgeOnline/problem.php?id=2440 题意:求第K个没有平方因子的数 思路:首先,可以二分数字,然后问题就转变成x以内有多少无平方因 ...
- BZOJ 2440 完全平方数 莫比乌斯反演模板题
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2440 题目大意: 求第k个无平方因子的数 思路: 二分答案x,求1-x中有多少个平方因 ...
- 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 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平 ...
- 数学(莫比乌斯函数):BZOJ 2440 完全平方数
Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些 数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而 这丝毫不影响他对其他数的热爱. 这 ...
- BZOJ.2440.[中山市选2011]完全平方数(莫比乌斯函数 二分)
题目链接 总感觉博客园的\(Markdown\)很..\(gouzhi\),可以看这的. 题意即求第\(k\)个无平方因子数. 无平方因子数(Square-Free Number),即分解之后所有质因 ...
- BZOJ 2440 完全平方数(莫比乌斯-容斥原理)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2440 题意:给定K.求不是完全平方数(这里1不算完全平方数)的倍数的数字组成的数字集合S ...
- BZOJ 2440 完全平方数(莫比乌斯反演+二分查找)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23362 题意:定义含有平方数因子的数为完全平方数(平方数因子不包含 ...
随机推荐
- mybatis入门--单表的增删改操作
单表的增加操作 前面我们看了如何搭建mybatis框架以及查询操作,这里我们说下如何使用mybatis进行增加用户的操作.首先是在user.xml文件中添加insert的方法.代码如下 <!-- ...
- (O)JS高阶函数应用——函数节流
在一些函数需被频繁调用的场景,如:window.onresize.mousemove.scroll滚动事件.上传进度等等,操作频繁导致性能消耗过高,而造成浏览器卡顿现象,我们可以通过函数节流的方式解决 ...
- Porsche PIWIS TESTER III
Allscanner VXDIAG Porsche Piwis III with Lenovo T440P Laptop Porsche Piwis tester III V37.250.020 N ...
- java集合示例 小心重载的陷阱
package com.hra.riskprice; import com.hra.riskprice.SysEnum.Factor_Type; import org.springframework. ...
- centos下安装nodejs
1.首先要安装gcc, # yum install libtool automake autoconf gcc-c++ openssl-devel 2.可以进入某个目录,下载NodeJS v0.10. ...
- linux_关闭防火墙
centos6版本 永久关闭 chkconfig iptables off 查看状态 chkconfig iptables --list 此时关闭开机重新启动 service iptables sto ...
- kbmmw 5.01 发布
Important notes (changes that may break existing code) ============================================= ...
- python中的特殊成员
python中的特殊成员: 小甲鱼论坛总结
- springboot+mysql实现quartz集群搭建
一.基本概念 Quartz核心的概念:scheduler任务调度.Job任务.Trigger触发器.JobDetail任务细节. scheduler任务调度: 是最核心的概念,需要把JobDetail ...
- python模块:pickle
"""Create portable serialized representations of Python objects. See module copyreg f ...