博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 2440: [中山市选2011]完全平方数【莫比乌斯函数+二分】
阅读量:5158 次
发布时间:2019-06-13

本文共 1197 字,大约阅读时间需要 3 分钟。

二分答案,然后用莫比乌斯函数作为容斥系数,计算当前枚举的mid内有几个满足要求的数

#include
#include
#include
using namespace std;const int N=50005;int t,k,mb[N],q[N],tot;bool v[N];int read(){ int r=0; char p=getchar(); while(p>'9'||p<'0') p=getchar(); while(p>='0'&&p<='9') { r=r*10+p-48; p=getchar(); } return r;}bool ok(long long x){ long long sum=0ll; for(int i=1;i*i<=x;i++) sum+=x/(i*i)*mb[i]; return sum>=k;}int main(){ mb[1]=1; for(int i=2;i<=50000;i++) { if(!v[i]) { q[++tot]=i; mb[i]=-1; } for(int j=1;j<=tot&&i*q[j]<=50000;j++) { int k=i*q[j]; v[k]=1; if(i%q[j]==0) { mb[k]=0; break; } mb[k]=-mb[i]; } } t=read(); while(t--) { k=read(); long long l=k,r=2e9,ans; while(l<=r) { long long mid=(l+r)>>1; if(ok(mid)) r=mid-1,ans=mid; else l=mid+1; } printf("%lld\n",ans); } return 0;}

转载于:https://www.cnblogs.com/lokiii/p/9720659.html

你可能感兴趣的文章
《大教堂与集市》读后感
查看>>
[RabbitMQ]Windows环境下rabbitmqclt(Command Line Tools)出现Erlang distribution failed错误的解决方法...
查看>>
创业这三年@各种奇遇
查看>>
正确配置调试world wind on vs2008
查看>>
纯css实现3D动画
查看>>
几种按键消抖方案的verilog描述
查看>>
四则运算 Day2
查看>>
使用SpringBoot生成项目
查看>>
C++ __super关键词用法
查看>>
FTP上传及下载
查看>>
作业5 四则运算 测试与封装 5.1
查看>>
实验7
查看>>
双系统更改启动顺序
查看>>
用参数较少的函数替换参数较多的函数
查看>>
【转】函数中的形参问题(指针形参、引用形参、二重指针作为形参)
查看>>
location对象查询字符串参数
查看>>
Python基础
查看>>
开发中用到的工具
查看>>
linux支持的machine-types
查看>>
(原)使用intel的ipp库计算卷积及相关
查看>>