P4318 完全平方数 [二分答案+容斥+莫比乌斯函数]
D e s c r i p t i o n \mathcal{Description} Description
小 X 自幼就很喜欢数。但奇怪的是,他十分讨厌完全平方数。他觉得这些数看起来很令人难受。由此,他也讨厌所有是完全平方数的正整数倍的数。然而这丝毫不影响他对其他数的热爱。
这天是小X的生日,小 W 想送一个数给他作为生日礼物。当然他不能送一个小X讨厌的数。他列出了所有小X不讨厌的数,然后选取了第 K个数送给了小X。小X很开心地收下了。
然而现在小 W 却记不起送给小X的是哪个数了。你能帮他一下吗?
有 T T T 组数据, 每组数据的 K < = 1 0 9 K<=10^9 K<=109, T < = 50 T<=50 T<=50 .
最 初 想 法 最初想法 最初想法
一个 完全平方数 的倍数分解质因数后, 存在有幂数大于 1 1 1的质因子 .
所以一个合法的数字必定是由若干个不同的质数相乘得来的.
思维断点: 怎么算出第 K K K 个合法的数 ?
正 解 部 分 正解部分 正解部分
答案具有 单调性, 考虑 二分答案 ,
要解决的问题为: [ 1 , x ] [1,x] [1,x] 内有多少个合法的数,
设在 [ 1 , x ] [1,x] [1,x] 有 T m p Tmp Tmp 个合法的数,
则 T m p = x − ( x 2 2 + x 3 2 + ⋯   ) + ( x ( 2 ∗ 3 ) 2 + x ( 3 ∗ 5 ) 2 + ⋯   ) − ⋯ Tmp=x-(\frac{x}{2^2}+\frac{x}{3^2}+\cdots) + (\frac{x}{(2 * 3)^2}+\frac{x}{(3 * 5)^2}+\cdots)-\cdots Tmp=x−(22x+32x+⋯)+((2∗3)2x+(3∗5)2x+⋯)−⋯
设这个式子中的某一项分母为 t 2 t^2 t2, 则 t ∈ [ 1 , x ] t∈[1,\sqrt{x}] t∈[1,x ], 且 t t t 是由若干个不同的质数构成的.
根据 莫比乌斯函数 的性质, 没有学过的可以看 这里 ,
- 若 μ ( t ) = 1 \mu(t)=1 μ(t)=1, t t t是由偶数个质数构成的, 该项为正 .
- 若 μ ( t ) = − 1 \mu(t)=-1 μ(t)=−1, t t t是由奇数个质数构成的, 该项为负 .
于是 T m p = ∑ i = 1 x μ ( i ) ⌊ x i 2 ⌋ Tmp=\sum_{i=1}^{\sqrt{x}}\mu(i)\lfloor \frac{x}{i^2}\rfloor Tmp=i=1∑x μ(i)⌊i2x⌋
问题得以解决.
时间复杂度 O ( x l o g x ) O(\sqrt{x}logx) O(x logx), 其中 x m a x = 1 0 10 x_{max}=10^{10} xmax=1010
实 现 部 分 实现部分 实现部分
二分的上界为 K ∗ 10 K*10 K∗10 (能开多大开多大…) .
但是记得开 l o n g l o n g long\ long long long
#include<cmath>
#include<cstdio>
#define reg register
typedef long long ll;const int maxn = 1e6 + 100;int p_cnt;
int p[maxn];
int mu[maxn];bool is_p[maxn];void sieve(){p_cnt = 0, mu[1] = 1;for(reg int i = 2; i < maxn; i ++){if(!is_p[i]) p[++ p_cnt] = i, mu[i] = -1;for(reg int j = 1; j <= p_cnt && p[j]*i < maxn; j ++){int t = p[j] * i;is_p[t] = 1;if(i % p[j] == 0){ mu[t] = 0; break ; }mu[t] = -mu[i];}}
}ll Calc(ll mid){ll lim = sqrt(mid);ll s = 0;for(reg ll i = 1; i <= lim; i ++) s += mu[i] * (mid/i/i);return s;
}void Work(){ll K;scanf("%lld", &K);ll l = 1, r = K*10;while(l < r){ll mid = l+r >> 1;if(Calc(mid) >= K) r = mid;else l = mid + 1;}printf("%lld\n", r);
}int main(){// freopen("a.in", "r", stdin);
// freopen("a.out", "w", stdout);sieve();int T;scanf("%d", &T);while(T --) Work();return 0;
}
P4318 完全平方数 [二分答案+容斥+莫比乌斯函数]相关推荐
- bzoj2440 [中山市选2011]完全平方数 容斥+莫比乌斯函数
Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些 数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而 这丝毫不影响他对其他数的热爱. 这 ...
- 51Nod 1439 - 互质对(容斥+莫比乌斯函数)
题目链接 https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1439 [题目描述] 有n个数字,a[1],a[2],-,a[ ...
- 【BZOJ2440】完全平方数,莫比乌斯反演+二分答案+容斥思想
Time:2016.05.29 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 这是一个和μ函数有很大关系的题目 x以内的无平方因子数=无需是任何质数的倍数的数的数量(即x)-是至少 ...
- Educational Codeforces Round 37 G. List Of Integers (二分,容斥定律,数论)
G. List Of Integers time limit per test 5 seconds memory limit per test 256 megabytes input standard ...
- HDU - 5468 Puzzled Elena (容斥/莫比乌斯)
做了好几个容斥了,一直找不到feel,这个做完在现在有一点感觉了.虽然刚开始也不会.但就是发现感觉不一样了. 首先,不考虑树的关系,单纯给出一个m,还有一个集合(里面数字任意),求集合里面跟m互质的数 ...
- CodeForces 1139D Steps to One(概率dp 容斥/莫比乌斯反演)
题目链接https://codeforces.com/contest/1139/problem/D 题意:给定一个m,每次在1-m中随机取一个数放到容器中,当容器的gcd为1时停止,求期望步数,用分数 ...
- hdu5468 Puzzled Elena(容斥 莫比乌斯反演)
hdu5468 Puzzled Elena 题意 求一棵子树内与它互质的点个数 解法 容斥 我们先求出与它不互质的数的个数,再用总数减去就好. #include <cstdio> #inc ...
- P4318-莫比乌斯函数+容斥
前言: 这题告诉我们莫比乌斯函数是平方数容斥的容斥系数. 题目大意: T T T组询问,问你第 k k k个不含平方因子的数. 题目思路:二分答案+容斥 先二分答案 m i d mid mid,问题转 ...
- P4318,bzoj2440-完全平方数【二分答案,莫比乌斯函数,容斥】
正题 题目链接: https://www.luogu.org/problem/P4318 https://www.lydsy.com/JudgeOnline/problem.php?id=2440 题 ...
最新文章
- 程序员兄弟们,我们的基本素质怎么样?
- 转自CSDNattilax的专栏 :自适应网页设计 跟 响应式 设计的区别跟原理and实践总结...
- MySQL 高级 - 存储过程 - 概述
- 黑马程序员--C语言基础之--sizeof()运算符的使用以及注意
- TypeScript 3.5 发布,速度提升、工具智能
- Windows 8 Platform (一) 台式机、笔记本电脑、平板电脑和智能手机
- winform使用字体图标
- 编译原理-8-Bison 语法分析器的生成器
- 阿里云mysql读写分离实现_MySQL-Proxy实现MySQL读写分离
- 垃圾分类-特别是有害垃圾
- 计算机建立局域网共享,局域网两台电脑如何建立共享文件夹
- cad菜单栏快捷键_天正建筑菜单栏不见了怎么调出来
- 复旦大学python教程_复旦大学大数据学院本科生课程学习手册.PDF
- 互动媒体技术A1作业报告
- Zemax学习笔记(11) - 变焦镜头设计实例
- R语言28-Prosper 贷款数据分析4
- 飞浆论文复现:用于图像到图像翻译的具有自适应层实例化的非监督的生成对抗网络
- 五位回文数质数c语言程序,(1)求既是回文数又是质数的五位十进制数。
- 如何在github的README中增加Badge标识
- respond.js IE8使用