题意:

求第n个不为完全平方数倍数的数

题解:

网上有人说答案不会超过2n (求证0 0?) 竟然不超过2n 那么很明显就是用二分做了

二分判定就是要求小于等于n的合法的数的个数

不难发现一个数若为完全平方数的倍数 则他的质因子肯定有一个的指数大于1

那么合法的数的所有质因数质数肯定都为1

_________________________________________________________________________________

于是题目变为 求小于等于的质因数指数都为1的数的个数

我们可以把<=n的 所有i^2的倍数的数减掉(i为质数)

算重?

莫比乌斯函数!(容斥原理- -)

答案就是n-奇数个质数的平方的倍数的个数+偶数个质数的平方的倍数的个数

即 ans=Σmiu[i]*(n/i^2)  (i<=(int) sqrt(n) 显然i如果>sqrt(n)个数肯定为0)

1    (i为奇数个质数的乘积)

miu[i]=  -1  (i为偶数个质数的乘积)

0    (i有某个质数指数>1)

_________________________________________________________________________________

代码:

 #include <cstdio>
#include <cmath>
typedef long long ll;
const ll M=;
ll t,n,miu[M],pri[M],bo[M],ans;
void makemiu(){
miu[]=;
for (ll i=;i<M;i++){
if (!bo[i]){
pri[++pri[]]=i;
miu[i]=-;
}
for (ll j=;j<=pri[] && pri[j]*i<M;j++){
bo[i*pri[j]]=;
if (i%pri[j]==){
miu[i*pri[j]]=;
break;
}else miu[i*pri[j]]=-miu[i];
}
}
}
ll check(ll t){
ll sq=(int)sqrt(t),res=;
for (ll i=;i<=sq;i++)
res=res+miu[i]*(t/(i*i));
return res;
}
ll getans(ll t){
ll l=,r=t*,mid;
while (l+<r){
mid=(l+r)/;
if (check(mid)<t) l=mid;
else r=mid;
}
return r;
}
int main(){
scanf("%I64d",&t);
makemiu();
for (ll i=;i<=t;i++){
scanf("%I64d",&n);
printf("%I64d\n",getans(n));
}
}

【bzoj2440】完全平方数的更多相关文章

  1. bzoj2440 完全平方数 莫比乌斯值+容斥+二分

    莫比乌斯值+容斥+二分 /** 题目:bzoj2440 完全平方数 链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2440 题意:求第k个小x数 ...

  2. [BZOJ2440]完全平方数解题报告|莫比乌斯函数的应用

    完全平方数 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱.  这天是小X的生日 ...

  3. Bzoj2440 完全平方数

    Time Limit: 10000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Description 小 X 自幼就很 ...

  4. bzoj2440完全平方数

    题目链接 上来先吐槽题面!!!!!! 你跟我说$1$不是完全平方数昂? 看了半天样例啊. 活生生的半天$……$ 莫比乌斯 反演    函数容斥一下,每次二分就好 反正本宝宝不知道反演是啥. 每次判断应 ...

  5. BZOJ2440完全平方数(莫比乌斯反演)

    Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱. 这天是 ...

  6. 【二分+容斥+莫比乌斯反演】BZOJ2440 完全平方数

    Description 求第k个没有完全平方因子的数,k<=1e9. Solution 这其实就是要求第k个µ[i](莫比乌斯函数)不为0的数. 然而k太大数组开不下来是吧,于是这么处理. 二分 ...

  7. [中山市选2011][bzoj2440] 完全平方数 [二分+莫比乌斯容斥]

    题面 传送门 思路 新姿势get 莫比乌斯容斥 $\sum_{i=1}{n}\mu(i)f(i)$ 这个东西可以把所有没有平方质因子的东西表示出来,还能容斥掉重复的项 证明是根据莫比乌斯函数的定义,显 ...

  8. [bzoj2440]完全平方数(二分+mobius反演)

    解题关键:由容斥原理得,num=1的倍数的数量−一个质数平方数(9,25,49...)的倍数的数量+两个质数的积平方数(36,100,225...)的数量−三个质数...... 这道题用莫比乌斯的正向 ...

  9. [bzoj2440]完全平方数[中山市选2011][莫比乌斯函数][线性筛][二分答案]

    题意:求第k个分解质因子后质因子次数均为一的数,即求第k个无平方因子数. 题解: 首先二分答案mid,那么现在就是要求出mid以内的无平方因子数的个数. 其次枚举$\sqrt{mid}$内的所有质数, ...

  10. SIEVE 线性筛

    今天来玩玩筛 英文:Sieve 有什么筛? 这里介绍:素数筛,欧拉筛,约数个数筛,约数和筛 为什么要用筛? 顾名思义,筛就是要漏掉没用的,留下有用的.最终筛出来1~n的数的一些信息. 为什么要用线性筛 ...

随机推荐

  1. ural 1221

    本来就是个很水的题  就是枚举起点长度然后直接判断就行了   但是比赛的时候写了个大bug 还找不出来     自己太水了 #include <cstdio> #include <c ...

  2. Nagios监控部署(转)

    转自 http://kyhack.blog.51cto.com/490370/213355 ky.blog 一.nagios简介        nagios是一款用于系统和网络监控的应用程序,它可以在 ...

  3. [itint5]根据前序后序遍历统计二叉树

    http://www.itint5.com/oj/#28 这题有意思.一开始还想不清楚,看了解释,很棒. 这个题目的特殊之处是所有节点的值都是不一样的. 所以递归过程可以大大简化. 先看两种遍历的性质 ...

  4. H264码流解析及NALU

    ffmpeg 从mp4上提取H264的nalu http://blog.csdn.net/gavinr/article/details/7183499 639     /* bitstream fil ...

  5. Servlet课程0425(四) Servlet实现简单用户登录验证

    Login.java //登录界面 package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class ...

  6. HeadFirst设计模式之状态模式

    一. 1. 2.The State Pattern allows an object to alter its behavior when its internal state changes. Th ...

  7. Qt 二进制文件读写(使用“魔术数字”)

    今天开始进入 Qt 的另一个部分:文件读写,也就是 IO.文件读写在很多应用程序中都是需要的.Qt 通过 QIODevice 提供了IO的抽象,这种设备(device)具有读写字节块的能力.常用的IO ...

  8. PNG优化/压缩

    我们总是希望 PNG 图像的容量能够小些.小些.再小些.优化 PNG 图像,可以用以下几个工具: 1.Optipng Optipng 是命令行工具,直接在其后追加所需优化的 PNG 图像即可 2.Pn ...

  9. POJ2253——Frogger(Floyd变形)

    Frogger DescriptionFreddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fi ...

  10. NFC(12)使用Android Beam技术传输文本数据及它是什么

    Android Beam技术是什么 Android Beam的基本理念就是两部(只能是1对1,不可像蓝牙那样1对多)NFC设备靠近时(一般是背靠背),通过触摸一部NFC设备的屏幕,将数据推向另外一部N ...