1853: [Scoi2010]幸运数字

Time Limit: 2 Sec  Memory Limit: 64 MB
Submit: 1817  Solved: 665
[Submit][Status][Discuss]

Description

在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是太少了,比如在[1,100]的区间内就只有6个(6,8,66,68,86,88),于是他又定义了一种“近似幸运号码”。lxhgww规定,凡是“幸运号码”的倍数都是“近似幸运号码”,当然,任何的“幸运号码”也都是“近似幸运号码”,比如12,16,666都是“近似幸运号码”。 现在lxhgww想知道在一段闭区间[a, b]内,“近似幸运号码”的个数。

Input

输入数据是一行,包括2个数字a和b

Output

输出数据是一行,包括1个数字,表示在闭区间[a, b]内“近似幸运号码”的个数

Sample Input

【样例输入1】
1 10
【样例输入2】
1234 4321

Sample Output

【样例输出1】
2
【样例输出2】
809

HINT

【数据范围】
对于30%的数据,保证1 < =a < =b < =1000000
对于100%的数据,保证1 < =a < =b < =10000000000

Source

2393: Cirno的完美算数教室

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 299  Solved: 183
[Submit][Status][Discuss]

Description

~Cirno发现了一种baka数,这种数呢~只含有2和⑨两种数字~~现在Cirno想知道~一个区间中~~有多少个数能被baka数整除~但是Cirno这么天才的妖精才不屑去数啦只能依靠聪明的你咯。

Input

一行正整数L R
( 1 < L < R < 10^10)

Output

一个正整数,代表所求的答案

Sample Input

1 100

Sample Output

58

HINT

Source

Solution

容斥原理 爆搜 剪枝

先预处理出baka数(幸运数),再去一下重(删除能被其他baka数整除的)

容斥之前有一个结论:

N内a或b的倍数的个数=N/a+N/b-N/lcm(a,b),即:a在N以内的倍数+b在N以内的倍数-a和b两个在N以内的相同的倍数(所以从 最小公倍数 开始)

然后就可以容斥,爆搜+剪枝 就可以A了 一个最行之有效的剪枝就是一开始所说的去重 也可以吧超过R的部分直接忽略

By The Way:baka数可以正常A,幸运数那题,需要改成unsigned long long,不然会TLE (可是本机明明跑的一样快)

Code

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 100100
unsigned long long L,R;
int top,Top;
unsigned long long stack[maxn],ans;
void Prework(long long x)
{
if (x<=R) stack[++top]=x; else return;
Prework(x*+); Prework(x*+);
}
bool cmp(long long a,long long b) {return a>b;}
long long gcd(long long a,long long b) {if (!b) return a; return gcd(b,a%b);}
void DFS(int dep,int t,long long x)
{
if (dep==Top+)
{
if (t%) ans+=R/x-(L-)/x;
else if (t) ans-=R/x-(L-)/x;
return;
}
DFS(dep+,t,x);
if (stack[dep]*x/gcd(stack[dep],x)<=R)
DFS(dep+,t+,stack[dep]*x/gcd(stack[dep],x));
}
int main()
{
// freopen("a.in","r",stdin);
// freopen("a.out","w",stdout);
scanf("%lld%lld",&L,&R);
Prework(); Prework();
sort(stack+,stack+top+);
// for (int i=1; i<=top; i++) printf("%d ",stack[i]); puts("");
for (int i=; i<=top; i++)
if (stack[i])
{
for (int j=i+; j<=top; j++)
if (stack[j]%stack[i]==) stack[j]=;
stack[++Top]=stack[i];
}
sort(stack+,stack+Top+,cmp);
// for (int i=1; i<=Top; i++) printf("%d ",stack[i]); puts("");
DFS(,,);
printf("%lld\n",ans);
return ;
}

BZOJ1853

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 10010
int L,R,top,Top;
long long stack[maxn],ans;
void Prework(long long x)
{
if (x<=R) stack[++top]=x; else return;
Prework(x*+); Prework(x*+);
}
bool cmp(long long a,long long b) {return a>b;}
long long gcd(long long a,long long b) {if (!b) return a; return gcd(b,a%b);}
void DFS(int dep,int t,long long x)
{
if (dep==Top+)
{
if (t%) ans+=R/x-(L-)/x;
else if (t) ans-=R/x-(L-)/x;
return;
}
DFS(dep+,t,x);
if (stack[dep]*x/gcd(stack[dep],x)<=(long long)R)
DFS(dep+,t+,stack[dep]*x/gcd(stack[dep],x));
}
int main()
{
scanf("%d%d",&L,&R);
Prework(); Prework();
sort(stack+,stack+top+);
// for (int i=1; i<=top; i++) printf("%d ",stack[i]); puts("");
for (int i=; i<=top; i++)
if (stack[i])
{
for (int j=i+; j<=top; j++)
if (stack[j]%stack[i]==) stack[j]=;
stack[++Top]=stack[i];
}
sort(stack+,stack+Top+,cmp);
// for (int i=1; i<=Top; i++) printf("%d ",stack[i]); puts("");
DFS(,,);
printf("%lld\n",ans);
return ;
}

去CodeVS群问了波..感觉弱智+10

【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝的更多相关文章

  1. Bzoj 2393: Cirno的完美算数教室 容斥原理,深搜

    2393: Cirno的完美算数教室 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 287  Solved: 175[Submit][Status][ ...

  2. 【BZOJ1853/2393】[Scoi2010]幸运数字/Cirno的完美算数教室 DFS+容斥

    [BZOJ1853][Scoi2010]幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那 ...

  3. [bzoj 2393] Cirno的完美算数教室 (容斥原理+dfs剪枝)

    题目描述 CirnoCirnoCirno发现了一种bakabakabaka数,这种数呢只含有222和999两种数字 现在CirnoCirnoCirno想知道[L,R][L,R][L,R]中有多少个数能 ...

  4. BZOJ2393: Cirno的完美算数教室

    2393: Cirno的完美算数教室 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 138  Solved: 83[Submit][Status] D ...

  5. BZOJ 1853: [Scoi2010]幸运数字

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 2117  Solved: 779[Submit][Status] ...

  6. Bzoj 1853: [Scoi2010]幸运数字 容斥原理,深搜

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 1774  Solved: 644[Submit][Status] ...

  7. bzoj 1853: [Scoi2010]幸运数字 容斥

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 1170  Solved: 406[Submit][Status] ...

  8. bzoj 1853: [Scoi2010]幸运数字&&2393: Cirno的完美算数教室【容斥原理】

    翻了一些blog,只有我用状压预处理嘛2333,.把二进制位的0当成6,1当成8就行啦.(2393是2和9 然后\( dfs \)容斥,加上一个数的\( lcm \),减去两个数的\( lcm \), ...

  9. BZOJ1853:[SCOI2010]幸运数字 & BZOJ2393:Cirno的完美算数教室——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=1853 https://www.lydsy.com/JudgeOnline/problem.php? ...

随机推荐

  1. IOS-利用AFNetworking监听网络状态

    网络环境检测:检测用户当前所处的网络状态 效果图 1.当蜂窝和wifi同时关闭时候  显示为不可达(AFNetworkReachabilityStatusNotReachable)状态 2.打开蜂窝移 ...

  2. 处理OSX创建的U盘, 删除EFI分区

    1. 运行 diskpart 2. list disk 3. 根据列出的硬盘, select disk [编号] 4. clean 5. exit 然后再创建分区和格式化

  3. Location of several networks in brain

    Source: Naci, L., et al. (2014). "A common neural code for similar conscious experiences in dif ...

  4. 实现路由的RouterMiddleware中间件

    实现路由的RouterMiddleware中间件 虽然ASP.NET Core应用的路由是通过RouterMiddleware这个中间件来完成的,但是具体的路由解析功能都落在指定的Router对象上, ...

  5. R统计分析处理

    [翻译]Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么? 阅读目录 0.前言 1.集成开发环境 2.语法 3.数据操作 4.图形显示 5.HTML部件 ...

  6. codevs 1051 接龙游戏

    codevs 1051 接龙游戏 http://codevs.cn/problem/1051/ 题目描述 Description 给出了N个单词,已经按长度排好了序.如果某单词i是某单词j的前缀,i- ...

  7. jQuery使用.on()无法绑定hover

    发现好像没有hover这个事件,jQuery的hover事件是一个封装,hover算不得一个事件.他只是将mouseover和mouseout合并了用mouseover和mouseout两个配合效果好 ...

  8. 是什么时候开始学习gulp了

    转自:http://www.ydcss.com/archives/18 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重 ...

  9. 让mysql支持emoji表情

    一.问题及原因 APP产品想对Emoji进行支持,但发现mysql数据库无法写入表情.原因是我们的mysql数据库默认用的是utf8编码,utf8编码存储时用的是三个字节,但Emoji表情是4个字节, ...

  10. 关于Node.js的httpClieint请求报错ECONNRESET的原因和解决措施

    背景说明 最近在工作项目中有下面一个场景: 使用Node.js的express框架实现了一个文件系统服务器端,其中有个API用于客户端上传文件.客户端使用Node.js的HttpClient来调用服务 ...