#容斥,广搜#nssl 1458 HR的疑惑 nssl 1460 逛机房
nssl 1458 HR的疑惑
题目
求\([1\sim n]\)中有多少个正整数\(x\)满足
\]
其中\(n\leq 10^{18}\)
分析
枚举指数,想要不重复必然是质数或互不相同的质数之积,
容斥求方案数,对于一个指数\(x\),不考虑重复的答案为\(\lfloor\sqrt[x]{n}\rfloor\)
注意特判1,将1每次统计时都减掉,最后再加上1
代码
#include <cstdio>
#include <cmath>
#include <algorithm>
#define rr register
using namespace std;
typedef long long lll; lll n; int xo[66011],sum,ans;
const int prime[17]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59};
signed main(){
scanf("%lld",&n),xo[0]=0;
for (rr int i=1;i<65536;++i) xo[i]=xo[i&(i-1)]+1;
for (rr int i=0;i<17;++i){
rr int now=pow(n,1.0/prime[i]),sum=now-1;
if (now<2) break;
for (rr int j=1;j<(1<<i);++j){
rr int G=1,flag=1;
for (rr int k=0;k<i;++k)
if ((j>>k)&1){
if (G>now/prime[k]) {flag=0; break;}
G*=prime[k];
}
if (!flag) continue;
rr int t=pow(now,1.0/G)-1;
if (t<1) continue;
sum+=(xo[j]&1)?-t:t;
}
ans+=sum;
}
return !printf("%d",ans+1);
}
nssl 1460 逛机房

分析
以完全平方数为源点广搜预处理所有答案,
原来的删除变成了添加,要注意0以及不能删掉数字
代码
#include <cstdio>
#include <cctype>
#include <cstring>
#define rr register
using namespace std;
const int N=1000011;
int dis[N],q[N],ox[N],head,tail;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void print(int ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
inline void doit(int y,int x){
if (dis[y]>dis[x]+1&&ox[y]>=ox[x])
dis[y]=dis[x]+1,q[++tail]=y;
}
signed main(){
memset(dis,42,sizeof(dis)),head=1,tail=0,dis[0]=0;
for (rr int i=1;i<=1000;++i) dis[i*i]=0,q[++tail]=i*i;
for (rr int i=10;i<N;i*=10) ox[i]=1; --tail;
for (rr int i=11;i<N;++i) ox[i]+=ox[i-1];
while (head<=tail){
rr int x=q[head++];
for (rr int i=0;i<10;++i)
for (rr int j=0;j<6;++j)
switch (j){
case 0:doit(x/10*10+i,x); break;
case 1:doit((x/100*10+i)*10+(x%10),x); break;
case 2:doit((x/1000*10+i)*100+(x%100),x); break;
case 3:doit((x/10000*10+i)*1000+(x%1000),x); break;
case 4:doit((x/100000*10+i)*10000+(x%10000),x); break;
case 5:doit(i*100000+(x%100000),x); break;
}
if (x>99999) continue;
for (rr int i=0;i<10;++i) doit(x*10+i,x),doit((x/10*10+i)*10+(x%10),x);
for (rr int i=0;i<10;++i) doit((x/100*10+i)*100+(x%100),x);
for (rr int i=0;i<10;++i) doit((x/1000*10+i)*1000+(x%1000),x);
for (rr int i=0;i<10;++i) doit((x/10000*10+i)*10000+(x%10000),x);
for (rr int i=0;i<10;++i) doit(i*100000+(x%100000),x);
}
for (rr int Q=iut();Q;--Q)
print(dis[iut()]),putchar(10);
return 0;
}
#容斥,广搜#nssl 1458 HR的疑惑 nssl 1460 逛机房的更多相关文章
- [SCOI2010]幸运数字(容斥+爆搜)
在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是 ...
- 【Luogu】P2567幸运数字(容斥爆搜)
题目链接 先预处理出幸运数,把成倍数关系的剔掉,然后用容斥原理搜索一下. 这里的容斥很像小学学的那个“班上有n个同学,有a个同学喜欢数学,b个同学喜欢语文……”那样. #include<cstd ...
- BZOJ2839 : 集合计数 (广义容斥定理)
题目 一个有 \(N\) 个 元素的集合有 \(2^N\) 个不同子集(包含空集), 现在要在这 \(2^N\) 个集合中取出若干集合(至少一个), 使得它们的交集的元素个数为 \(K\) ,求取法的 ...
- 【做题】51NOD1518 稳定多米诺覆盖——容斥&dp
题意:求有多少种方案,用多米诺骨牌覆盖一个\(n\times m\)的棋盘,满足任意一对相邻行和列都至少有一个骨牌横跨.对\(10^9+7\)取模. \(n,m \leq 16\) 首先,这个问题的约 ...
- 2019.01.17 bzoj1853: [Scoi2010]幸运数字(容斥+dfs)
传送门 搜索菜题,然而第一次没有注意然后爆longlonglong longlonglong了. 题意:称所有数位由6,86,86,8组成的数为幸运数字,问一个一个区间[l,r][l,r][l,r]中 ...
- HDU 4135 Co-prime 欧拉+容斥定理
Co-prime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 【BZOJ1853】幸运数字(搜索,容斥)
[BZOJ1853]幸运数字(搜索,容斥) 题面 BZOJ 洛谷 题解 成功轰下洛谷rk1,甚至超越了一个打表选手 这题思路很明显吧,先搞出来所有范围内的合法数字,然后直接容斥, 容斥的话显然没有别的 ...
- BZOJ1042:[HAOI2008]硬币购物(DP,容斥)
Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. Input 第一 ...
- bzoj 1853 容斥 + 搜索
思路:先把所有幸运数字找出来, 把没有用的去掉,然后爆搜容斥,因为最多只会搜十几个就超过限制了, 所以是可行的. #include<bits/stdc++.h> #define LL lo ...
- uoj#422. 【集训队作业2018】小Z的礼物(MIn-Max容斥+插头dp)
题面 传送门 题解 好迷-- 很明显它让我们求的是\(Max(S)\),我们用\(Min-Max\)容斥,因为\(Min(S)\)是很好求的,只要用方案数除以总方案数算出概率,再求出倒数就是期望了 然 ...
随机推荐
- 【小记事】如何设置vscode代码格式化时不要自动换行
最近一格式化就给我分好多行,好气哦(`ヘ´)=3 在setting.json中添加如下代码: "vetur.format.defaultFormatter.html": " ...
- 面向对象之封装,类的相关操作,私有成员删除,构造方法__init__---day20
1.面向对象之封装 # ### 面向对象oop -封装 """ 类中封装: 成员属性 成员方法 封装等级: 1.公有:公有成员既能够在类外调用,也可在类内调用 2.私有: ...
- 苏宁基于 AI 和图技术的智能监控体系的建设
汤泳,苏宁科技集团智能监控与运维产研中心总监,中国商业联合会智库顾问,致力于海量数据分析.基于深度学习的时间序列分析与预测.自然语言处理和图神经网络的研究.在应用实践中,通过基于 AI 的方式不断完善 ...
- CSRF(Steam的链接不用随便点)
漏洞详解 CSRF 漏洞原理: 攻击者会冒充或利用用户本人对web服务器发送请求,然而web服务器无法识别该请求是否为用户本人所发送,因此造成各种危害. 漏洞利用过程: 1)首先需要用户登录了上网站, ...
- 四: Mysql用户管理
# 用户与权限管理 MySQL用户可以分为普通用户和root用户, root用户是超级管理员,拥有所有权限,包括创建用户.删除用户和修改用户的密码等管理权限:普通用户只拥有被授予的各种权限. MySQ ...
- Android的BLE广播数据包解析---Android系列, 蓝牙技术(含BLE)
一.引言 理解和分析这个数据包结构(这里面也涉及广播间隔时间的设置,设备广播数据间隔设置长了,会影响设备被发现的效率:设置短时,又响应功耗). 我们所说的BLE设备,其实是有区分有两种角色 Centr ...
- 解决网页无法复制粘贴选中的问题 显示vip无法复制解决方案
方法:先是按F12打开控制台点击console输入以下代码!!!! 解决网页禁止鼠标右键,无法被选中的 第一种: javascript:(function() { function R(a){ona ...
- gitlab推送代码触发jenkins构建
预期:推送devloop或者master分支的代码, 自动执行jenkins 发布测试环境 首先,jenkins中需要安装如下插件 打开一个任务配置,构建触发器中勾选"Build when ...
- 【架构师视角系列】QConfig配置中心系列之Server端(三)
声明 原创文章,转载请标注.https://www.cnblogs.com/boycelee/p/17993697 <码头工人的一千零一夜>是一位专注于技术干货分享的博主,追随博主的文章, ...
- CPNtools协议建模安全分析--ML语言之颜色集定义(六)
之前一直在怀疑我是不是因为对CPN Tools的原理结构还是不够理解,对Petri网的还没有弄清楚,越往后面看这种质疑越来越严重. 之前说CPN Tools在对称和非对称算法中不能形式化的问题,后续看 ...