Description


小 X 自幼就很喜欢数。但奇怪的是,他十分讨厌完全平方数。他觉得这些
数看起来很令人难受。由此,他也讨厌所有是完全平方数的正整数倍的数。然而
这丝毫不影响他对其他数的热爱。
这天是小X的生日,小 W 想送一个数给他作为生日礼物。当然他不能送一
个小X讨厌的数。他列出了所有小X不讨厌的数,然后选取了第 K个数送给了
小X。小X很开心地收下了。
然而现在小 W 却记不起送给小X的是哪个数了。你能帮他一下吗?

对于 100%的数据有 1 ≤ Ki ≤ 10^9, T ≤ 50

Solution


首先回答问题,能!
本蒟蒻第一道关于莫比乌斯函数的题,mark。定义:若i为k个互不相同的质数之积则 μ(i)=(−1)k \mu(i)=(-1)^k,否则为0

容易想到二分答案然后计算[1,mid]中具有平方因子的数的数量(绕舌
考虑容斥,那么ans=mid-有至少1个质数平方因子的数+有至少两个质数平方因子的数-有至少3个。。。
由于 [n√,n] [\sqrt{n},n]之间的数字平方大于n,我们只需要考虑 [1,n√] [1,\sqrt n]就行了
根据莫比乌斯函数的定义 ans=∑n√i=1μ(i)∗⌊ni2⌋ ans=\sum_{i=1}^{\sqrt{n}}\mu(i)*\lfloor\frac{n}{i^2}\rfloor
注意开long long,存mu的数组可以用short毕竟只有-1,0,1

Code


#include <stdio.h>
#include <string.h>
#define rep(i,st,ed) for (int i=st;i<=ed;++i)
typedef long long ll;
const ll INF=2147483647;
const int N=100005;
const int M=50005;
bool not_prime[N];
short mu[N];
int prime[M];
void get_mu() {mu[1]=1;rep(i,2,N-1) {if (!not_prime[i]) {prime[++prime[0]]=i;mu[i]=-1;}for (int j=1;j<=prime[0]&&i*prime[j]<N;j++) {not_prime[i*prime[j]]=1;if (i%prime[j]==0) {mu[i*prime[j]]=0;break;}mu[i*prime[j]]=-mu[i];}}
}
ll count(ll x) {ll ret=0;for (int i=1;i*i<=x;i++) ret+=(ll)mu[i]*x/(i*i);return ret;
}
int main(void) {get_mu();int T; scanf("%d",&T);while (T--) {ll n; scanf("%lld",&n);ll l=1,r=INF;while (l<=r) {ll mid=(l+r)>>1;if (count(mid)>=n) r=mid-1;else l=mid+1;}printf("%lld\n", r+1);}return 0;
}

bzoj2440 [中山市选2011]完全平方数 容斥+莫比乌斯函数相关推荐

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

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 4018  Solved: 1952 [Submit][S ...

  2. BZOJ2440 [中山市选2011]完全平方数

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

  3. bzoj2440: [中山市选2011]完全平方数

    自己写的第一个博客......... BZOJ 2440 [题意] 求第K个约数不含平方数的数 (1<=k<=10^9), 共有T组数据(T<=50). [题解] 首先题解并不是我独 ...

  4. bzoj2440:[中山市选2011]完全平方数

    Pre 第一次提交的时候\(WA\)了. 百思(死)不得其解(求根公式:我还活着呢!). 最后发现交错题了(尴尬). 不过这题转换到莫比乌斯函数有一点神奇巧妙. 还有一些小细节需要注意. Soluti ...

  5. 2017.3.11[bzoj2440][中山市选2011]完全平方数

    线性筛+莫比乌斯函数裸题 http://www.lydsy.com/JudgeOnline/problem.php?id=2440 考虑二分答案,对于每个数看它是第几个,即对于这个数看比他小的有多少个 ...

  6. [BZOJ2440][中山市选2011]完全平方数(莫比乌斯函数,二分)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2440 题意:RT. 是https://wenku.baidu.com/view/fbec9 ...

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

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

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

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

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

    Time Limit: 10 Sec Memory Limit: 128 MB Submit: 5160 Solved: 2515 [Submit][Status][Discuss] Descript ...

最新文章

  1. 在多台FMS服务器之间共享流
  2. 微隔离的红蔷薇在湾区创见的舞台绽放
  3. Eclipse: “Update SVN cache” hangs and locks up
  4. OpenCV运行自定义OCR模型
  5. rabbitmq(四)、消息丢失问题
  6. 第五模块·WEB开发基础-第2章JavaScript基础
  7. linux 修改当前系统时间
  8. 写文件 追加到开始_文件和流
  9. 如何将分表汇总到总表_总表输入数据,自动拆分到分表,你会吗?
  10. 郭台铭卸任董事长 鸿海进入集体领导时代
  11. 狗和披萨:使用TensorFlow.js在浏览器中实现计算机视觉
  12. Affinity Publisher for Mac(实用桌面排版工具)
  13. AC日记——Sagheer, the Hausmeister codeforces 812b
  14. calendar控件使用 extjs_Calendar 日历控件使用
  15. python死循环_python中死循环
  16. pdf转图片,pdf转高清图片方法
  17. ModBus RTU-上位机与PLC通信
  18. c语言中最小公倍数算法,常见算法:C语言求最小公倍数和最大公约数三种算法...
  19. POSCMS 系统缓存设置
  20. 武汉新时标文化传媒有限公司抖音电商的算法逻辑

热门文章

  1. php 模拟微信浏览器打开微信链接
  2. 全国各地DNS(电信,移动,联通,教育网)
  3. SparkCore:Spark原理初探(执行流程图)
  4. 【转】SFU级联解决方案——Licode
  5. 关于概率中的贝叶斯学派和频率学派的各种解释
  6. 计算机什么专业相对简单,工科最简单的专业是什么
  7. win10没有修改host权限的解决方案
  8. 高效能自动化港口数字化码头智慧港航,中国人工智能企业CIMCAI世界港航人工智能领军者,成熟港口码头人工智能产品中国人工智能企业
  9. 趣炫游戏2021届毕业生闪电补录
  10. Oracle分组查询