【BZOJ】2440: [中山市选2011]完全平方数
【题意】T次询问第k小的非完全平方数倍数的数。T<=50,k<=10^9。(即无平方因子数——素因数指数皆为0或1的数)
【算法】数论(莫比乌斯函数)
【题解】考虑二分,转化为询问[1,x]中无平方因子数的个数(x最大为2n)。
运用容斥,答案ans=x - 1个素数的平方的倍数的数的个数 + 2个素数的乘积的平方的倍数的数的个数……
枚举i=[1,√x]的所有数字,系数是莫比乌斯函数,i的平方的倍数的数的个数就是n/(i^2)。
ans=x-Σμ(i)*n/(i^2),i∈[1,√x]
复杂度O(T*√n)。
注意:二分上届为2n,l+r会爆int。
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=;
int T,tot,n,miu[maxn],prime[maxn];
bool mark[maxn];
int main(){
scanf("%d",&T);
miu[]=;
for(int i=;i<=;i++){
if(!mark[i]){prime[++tot]=i;miu[i]=-;}
for(int j=;j<=tot&&i*prime[j]<=;j++){
mark[i*prime[j]]=;
if(i%prime[j]==)break;
miu[i*prime[j]]=-miu[i];
}
}
while(T--){
scanf("%d",&n);
long long l=,r=*n,mid,ans;//
while(l<r){
mid=(l+r)>>;ans=;int sq=(int)sqrt(mid);
for(int i=;i<=sq;i++){
ans+=miu[i]*mid/i/i;
}
if(ans>=n)r=mid;else l=mid+;
}
printf("%lld\n",l);
}
return ;
}
定义集合x(素数)表示不是x^2的倍数的数字集合。
则要求集合并,容易知道集合交的补集。
【BZOJ】2440: [中山市选2011]完全平方数的更多相关文章
- BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数
BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数 题面 找出第k个不是平方数的倍数的数(1不是平方数, \(k \le 10^9\)). 题解 首先二分答案,问题就转化成了求\([ ...
- BZOJ 2440 [中山市选2011]完全平方数 (二分 + 莫比乌斯函数)
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4805 Solved: 2325[Submit][Sta ...
- BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3028 Solved: 1460[Submit][Sta ...
- BZOJ 2440: [中山市选2011]完全平方数( 二分答案 + 容斥原理 + 莫比乌斯函数 )
先二分答案m,<=m的有m-∑(m/pi*pi)+∑(m/pi*pi*pj*pj)-……个符合题意的(容斥原理), 容斥系数就是莫比乌斯函数μ(预处理)... ----------------- ...
- 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]完全平方数 二分+容斥
直接筛$\mu$?+爆算?再不行筛素数再筛个数?但不就是$\mu^2$的前缀和吗? 放...怕不是数论白学了$qwq$ 思路:二分+容斥 提交:两次(康了题解) 题解: 首先答案满足二分性质(递增), ...
- bzoj 2440: [中山市选2011]完全平方数
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> #defin ...
- BZOJ.2440.[中山市选2011]完全平方数(莫比乌斯函数 二分)
题目链接 总感觉博客园的\(Markdown\)很..\(gouzhi\),可以看这的. 题意即求第\(k\)个无平方因子数. 无平方因子数(Square-Free Number),即分解之后所有质因 ...
- 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 ...
随机推荐
- lintcode-491-回文数
491-回文数 判断一个正整数是不是回文数. 回文数的定义是,将这个数反转之后,得到的数仍然是同一个数. 注意事项 给的数一定保证是32位正整数,但是反转之后的数就未必了. 样例 11, 121, 1 ...
- Windows上安装、配置MySQL的常见问题
一,MySQL的下载安装 MySQL的安装过程就不说了,基本上和一般软件的安装过程没什么两样,就是一路点next,设置的root用户的密码要牢记.具体教程可以参考:http://jingyan.bai ...
- 第六章 过滤器Filter
Filter概述 Filter不用于客户端请求,只用于对request,response进行修改或对context,session,request事件进行监听. 1.概述 如上图,多个filter组成 ...
- 简述Java中Http/Https请求监听方法
一.工欲善其事必先利其器 做Web开发的人总免不了与Http/Https请求打交道,很多时候我们都希望能够直观的的看到我们发送的请求参数和服务器返回的响应信息,这个时候就需要借助于某些工具啦.本文将采 ...
- C#开发移动应用 - 环境搭建
前言 其实从2013开始就想用Xamarin,奈何 当初收费一座大山压在身上 完全无法见得庐山真面目 后面2015,微软收购Xamarin,没过多久就宣布对个人用户免费..那个兴奋劲就别提了.. 兴奋 ...
- PHP之array_flip()方法
array_flip — 交换数组中的键和值 array array_flip ( array $trans ) array_flip() 返回一个反转后的 array,例如 trans 中的键名变成 ...
- list的迭代器能解决并发问题,collection 的迭代器不能解决并发问题,for可以解决并发问题
list的迭代器能解决并发问题,collection 的迭代器不能解决并发问题 为什么list支持add,collection不支持 例如有两个人同时添加第三个元素 list的迭代器能锁定线程 只有等 ...
- castle activerecord 学习过程出现的问题
优点: 1.CRUD:代码简洁 2.不用配置map 3.自带事务方便 4.自带IOC 5.自带 数据有效性验证 缺点: 1.自增长(Oracle 一直提示序号不存在,有空继续尝试) 2.多条件,直接用 ...
- javascript的解析顺序
一.javascript的解析顺序 我们大家所理解的代码的执行顺序都是从上到下的,但是实际上确不是这样的.我们看一下下面的代码. 1 alert(a);2 var a = 1;如果执行顺序是从上到下的 ...
- 【bzoj4212】神牛的养成计划
Portal --> bzoj4212 Description 给你\(n\)个字符串,接下来有\(m\)个询问,每个询问由两个给定的字符串\(s_1\)和\(s_2\)组成,对于每个询问输 ...