BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数


题面

找出第k个不是平方数的倍数的数(1不是平方数, \(k \le 10^9\))。

题解

首先二分答案,问题就转化成了求\([1, x]\)中有多少数不是平方数的倍数,设这个答案为\(Q(x)\)。

根据容斥原理,\(Q(x)\)等于:

[1, x] 0个质数的平方的倍数的数量(1的倍数的数量)

  • [1, x] 1个质数的平方的倍数的数量 (如\(3^2=9\)的倍数的数量)
  • [1, x] 2个质数的平方的倍数的数量 (如\((2 * 3)^2 = 36\)的倍数的数量)
  • [1, x] 3个质数的平方的倍数的数量
  • ......

发现某个数的贡献就是它的平方根莫比乌斯函数,如36的贡献是1, 4的贡献是-1。

所以

\[Q(x) = \sum_{i = 1}^{\lfloor \sqrt x \rfloor} \mu (i) * \lfloor \frac{x}{i^2} \rfloor
\]

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
typedef long long ll;
#define space putchar(' ')
#define enter putchar('\n')
template <class T>
void read(T &x){
char c;
bool op = 0;
while(c = getchar(), c < '0' || c > '9')
if(c == '-') op = 1;
x = c - '0';
while(c = getchar(), c >= '0' && c <= '9')
x = x * 10 + c - '0';
if(op) x = -x;
}
template <class T>
void write(T x){
if(x < 0) putchar('-'), x = -x;
if(x >= 10) write(x / 10);
putchar('0' + x % 10);
}
const int N = 100000;
int T, n, mu[N + 5], prime[N + 5], tot;
bool notprime[N + 5];
void getmu(){
mu[1] = 1;
for(int i = 2; i <= N; i++){
if(!notprime[i]) prime[++tot] = i, mu[i] = -1;
for(int j = 1; j <= tot && i * prime[j] <= N; j++){
notprime[i * prime[j]] = 1;
if(i % prime[j] == 0){
mu[i * prime[j]] = 0;
break;
}
else mu[i * prime[j]] = -mu[i];
}
}
}
ll check(ll x){
ll ret = 0;
for(ll i = 1; i * i <= x; i++)
ret += x / (i * i) * mu[i];
return ret;
}
int main(){
getmu();
read(T);
while(T--){
read(n);
ll l = 1, r = 1644934081, mid;
while(l < r){
mid = (l + r) >> 1;
if(check(mid) >= n) r = mid;
else l = mid + 1;
}
write(l), enter;
}
return 0;
}

BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数的更多相关文章

  1. Bzoj 2440: [中山市选2011]完全平方数(莫比乌斯函数+容斥原理+二分答案)

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MB Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平 ...

  2. BZOJ.2440.[中山市选2011]完全平方数(莫比乌斯函数 二分)

    题目链接 总感觉博客园的\(Markdown\)很..\(gouzhi\),可以看这的. 题意即求第\(k\)个无平方因子数. 无平方因子数(Square-Free Number),即分解之后所有质因 ...

  3. 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 ...

  4. BZOJ 2440 [中山市选2011]完全平方数 (二分 + 莫比乌斯函数)

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 4805  Solved: 2325[Submit][Sta ...

  5. BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3028  Solved: 1460[Submit][Sta ...

  6. BZOJ 2440: [中山市选2011]完全平方数( 二分答案 + 容斥原理 + 莫比乌斯函数 )

    先二分答案m,<=m的有m-∑(m/pi*pi)+∑(m/pi*pi*pj*pj)-……个符合题意的(容斥原理), 容斥系数就是莫比乌斯函数μ(预处理)... ----------------- ...

  7. [BZOJ 2440] [中山市选2011] 完全平方数 【二分 + 莫比乌斯函数】

    题目链接:BZOJ - 2440 题目分析 首先,通过打表之类的方法可以知道,答案不会超过 2 * k . 那么我们使用二分,对于一个二分的值 x ,求出 [1, x] 之间的可以送出的数有多少个. ...

  8. bzoj 2440: [中山市选2011]完全平方数【莫比乌斯函数+二分】

    二分答案,然后用莫比乌斯函数作为容斥系数,计算当前枚举的mid内有几个满足要求的数 #include<iostream> #include<cstdio> #include&l ...

  9. bzoj 2440: [中山市选2011]完全平方数

    #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #defin ...

随机推荐

  1. 2017-2018-1 20155202 张旭 嵌入式C语言——时钟提取时分秒

    2017-2018-1 20155202 张旭 嵌入式C语言--时钟提取时分秒 任务要求: 在作业本上完成附图作业,要认真看题目要求. 提交作业截图 作弊本学期成绩清零(有雷同的,不管是给别人传答案, ...

  2. 20155311高梓云《网络对抗》逆向及Bof基础

    20155311高梓云<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...

  3. LORA---关于LORA的30个常见问题解答

    1) 什么是LoRa调制? LoRa (Long Range,远距离)是一种调制技术,与同类技术相比,提供更长的通信距离.调制是基于扩频技术,线性调制扩频(CSS)的一个变种,具有前向纠错(FEC). ...

  4. 校内模拟赛 coin

    题意: n*m的棋盘,每个格子可能是反着的硬币,正着的硬币,没有硬币,每次可以选未选择的一行或者未选择的一列,将这一行/列的硬币取反.如果没有可选的或者硬币已经全部正面,那么游戏结束. 最后一次操作的 ...

  5. CF708D Incorrect Flow

    CF708D Incorrect Flow 有源汇上下界最小费用可行流.(= =) 对每条给定的边连边: 首先\(f_i\)是给定的,所以要有一条这个边而且要流满,先\(a_i-b_i\)连一条上下界 ...

  6. libgdx判断矩形重叠碰撞

    有两种方式. 1. 排除法,排除四种不可能重叠的情况就是了. public static boolean IsOverlap( Rectangle rect1, Rectangle rect2 ){ ...

  7. [CF587F]Duff is Mad[AC自动机+根号分治+分块]

    题意 给你 \(n\) 个串 \(s_{1\cdots n}\) ,每次询问给出 \(l,r,k\) ,问在 \(s_{l\cdots r}\) 中出现了多少次 \(s_k\) . \(n,q,\su ...

  8. Jmeter(十八)_Ubuntu部署jmeter与ant

    Docker部署接口自动化持续集成环境第三步,容器化Jmeter与ant! 接上文:Docker_容器化jenkins 为了整合接口自动化的持续集成工具,我将jmeter与ant都部署在了Jenkin ...

  9. jira webhook 事件触发并程序代码调用jenkins接口触发构建操作

    要解决的问题 开发管理工具触发站点构建事件,事件处理中需要调用Jenkins接口开始构建动作. 我的应用场景: 使用jira作为管理工具,在jira中创建自定义的工作流来规定测试,上线,发布等流程,并 ...

  10. 【转】Cocos2d-x 3.x基础学习: 总结数学类Vec2/Size/Rect

    转载:http://www.taikr.com/article/1847 在Cocos2d-x 3.x中,数学类Vec2.Size.Rect,是比较常用的类.比如设置图片位置,图片大小,两图片的碰撞检 ...