正解:容斥/杜教筛+二分

解题报告:

传送门$QwQ$

首先一看这数据范围显然是考虑二分这个数然后$check$就计算小于等于它的不是讨厌数的个数嘛.

于是考虑怎么算讨厌数的个数?

看到这个讨厌数说,不能是完全平方数的倍数,不难想到可以理解为将$x$质因数分解后不存在指数大于1的情况.

这时候自然而然能联想到莫比乌斯函数?因为根据定义有,只有质数大于1时等于0其他时候为$\pm 1$.

所以答案就$\sum (\mu(i))^2$.杜教筛就好(因为,我,不会杜教筛,所以一句话就带过去了$kk$,可能等我学了杜教筛会来补锅的趴,,?$QwQ$

法二考虑容斥,即答案=总数-一个质因子的平方的倍数+两个不同质因子的平方的倍数-三个不同质因子的平方的倍数...

不解释了趴我$jio$得还挺显然的$QwQ$

考虑怎么求呢?再次想到莫比乌斯函数的特殊性质,考虑枚举这个平方根$i$,贡献显然就$\frac{n}{i^2}$.考虑系数?发现系数取决于质因子的个数的奇偶性,依然根据莫比乌斯函数的定义有,质因子个数为奇数时为负一,质因子个数为偶数是为正一.且质因子质数大于1时等于0保证了一定是不同质因子.

综上,可以得到答案$ans=\sum_{i=1}^{i^2\leq n}\mu(i)\cdot \frac{n}{i^2}$

$over$?

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define fi first
#define sc second
#define gc getchar()
#define mp make_pair
#define int long long
#define P pair<int,int>
#define ri register int
#define rc register char
#define rb register bool
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define e(i,x) for(ri i=head[x];i;i=edge[i].nxt) const int N=1e6+;
int n,m,miu[N],pr[N],pr_cnt;
bool is_pr[N]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il void pre()
{
miu[]=;
rp(i,,N-)
{
if(!is_pr[i])pr[++pr_cnt]=i,miu[i]=-;
rp(j,,pr_cnt)
{
if(i*pr[j]>N-)break;;is_pr[i*pr[j]]=;
if(!(i%pr[j])){miu[i*pr[j]]=;break;}
miu[i*pr[j]]=-miu[i];
}
}
}
il int check(ri x)
{
ri ret=;
for(ri i=;i*i<=x;++i)ret+=miu[i]*(x/i/i);
return ret;
} signed main()
{
//freopen("4318.in","r",stdin);freopen("4318.out","w",stdout);
ri T=read();pre();
while(T--)
{ri K=read(),l=,r=K<<;while(l<r){ri mid=(l+r)>>;if(check(mid)>=K)r=mid;else l=mid+;}printf("%lld\n",l);}
return ;
}

最新文章

  1. 初探javascript
  2. 安装oracle 11g时出现启动服务出现错误,找不到OracleMTSRecoveryService
  3. JNI笔记之 初体验
  4. Ubuntu终端Terminal常用快捷键
  5. JqGrid的总结大全【转】
  6. Web前端开发学习笔记(二)
  7. ●BZOJ 2694 Lcm
  8. 分布式进阶(十二)Docker固定Container IP
  9. 解决can&#39;t connect to redis-server
  10. POJ3662 SPFA//二分 + 双端队列最短路
  11. apache基础学习
  12. 根据关键字找进程id
  13. Kaggel比赛 : [Give Me Some Credit]
  14. 彻底解决:java.sql.SQLException: Incorrect string value: &#39;\xF0\x9F\x92\x94&#39; for column &#39;name&#39; at row 1
  15. 前往央都之行-gdufe1529
  16. U3D之Editor扩展学习
  17. Android实践项目汇报(三)
  18. Python3基础 str find+index 是否存在指定字符串,有则返回第一个索引值
  19. 发现恶意ip大量访问 可使用命令进行封禁
  20. PHP flock() 函数 php中的文件锁定机制

热门文章

  1. php 对接java短信接口带有英文逗号就无法通过
  2. 全站加速(DCDN)- IP应用加速产品解读
  3. @loj - 3022@ 「CQOI2017」老 C 的方块
  4. 模板—Kruskal
  5. 学习C#泛型
  6. Python基础之(三)----PyGame安装步骤
  7. hdu 4419 Colourful Rectangle (离散化扫描线线段树)
  8. RegExp类型
  9. title与h1的区别、b与strong的区别、i与em的区别?
  10. ImportError: DLL load failed: 找不到指定的模块。 TensorFlow 1.13