【bzoj1853】: [Scoi2010]幸运数字 数论-容斥原理
预处理出所有幸运数字然后容斥原理
但是幸运数字是2logn个数的 直接搞会炸
所以把成倍数的处理掉
然后发现还是会T 所以数字要从大到小处理会快很多 我也不知道为什么
还有就是剪枝的时候要开double 不然爆longlong
/* http://www.cnblogs.com/karl07/ */
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <algorithm>
using namespace std;
#define ll long long const ll N=;
ll num[];
ll a,b,cnt,ans,cc; ll gcd(ll a,ll b){ return b== ? a : gcd(b,a%b);}
ll lcm(ll a,ll b){ return a/gcd(a,b)*b;} void dfs(ll x,ll n){
if (x>n) return;
num[++cnt]=x;
dfs(x*+,n);
dfs(x*+,n);
} void rc(ll c,ll x,ll n,ll nw){
if (x==){
if (c==) return;
if (c&) ans+=n/nw; else ans-=n/nw;
return;
}
if ((double)nw/gcd(num[x],nw)*num[x] <= n) rc(c+,x-,n,lcm(nw,num[x]));
rc(c,x-,n,nw);
} ll work(ll n){
if (n<) return ;
cnt=;ans=;
dfs(,n);dfs(,n);cc=cnt;
num[]=;
sort(num+,num+cnt+);
for (int i=;i<=cnt;i++){
for (int j=i+;j<=cnt && num[i]!=N;j++){
if (num[j]%num[i]==) num[j]=N,cc--;
}
}
sort(num+,num+cnt+);
rc(,cc-,n,num[cc]);
rc(,cc-,n,);
return ans;
} int main(){
scanf("%lld%lld",&a,&b);
printf("%lld\n",work(b)-work(a-));
return ;
}
【bzoj1853】: [Scoi2010]幸运数字 数论-容斥原理的更多相关文章
- bzoj1853: [Scoi2010]幸运数字 dp+容斥原理
在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是 ...
- BZOJ1853 Scoi2010 幸运数字 【枚举+容斥】
BZOJ1853 Scoi2010 幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号 ...
- bzoj1853[Scoi2010]幸运数字 容斥
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 3027 Solved: 1128[Submit][Status ...
- 【BZOJ 1853】 1853: [Scoi2010]幸运数字 (容斥原理)
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 2472 Solved: 911 Description 在中国 ...
- [BZOJ1853][Scoi2010]幸运数字 容斥+搜索剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 3202 Solved: 1198[Submit][Status ...
- BZOJ1853 [Scoi2010]幸运数字 容斥原理
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1853 题意概括 求一个区间范围内,近似幸运数字的个数. 定义: 幸运数字:仅由6或者8组成的数字. ...
- BZOJ1853 [Scoi2010]幸运数字
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- BZOJ 1853: [Scoi2010]幸运数字(容斥原理)
http://www.lydsy.com/JudgeOnline/problem.php?id=1853 题意: 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运 ...
- 2019.01.17 bzoj1853: [Scoi2010]幸运数字(容斥+dfs)
传送门 搜索菜题,然而第一次没有注意然后爆longlonglong longlonglong了. 题意:称所有数位由6,86,86,8组成的数为幸运数字,问一个一个区间[l,r][l,r][l,r]中 ...
随机推荐
- java代码字符字节流
总结: package com.aini; import java.io.IOException; import java.io.InputStreamReader; //流类 import java ...
- Dubbo各种协议详解
(1)协议支持 Dubbo支持多种协议,如下所示: Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebService协议 Thrift协议 Memcached协议 Redis协议 在 ...
- json例子--bai
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- [Chapter 3 Process]Practice 3.2 Including the initial parent process, how many processes are created by the program shown in Figure?
3.2 Including the initial parent process, how many processes are created by the program shown in Fig ...
- linux命令-su切换用户
查看当前用户 #id uid=0(root) gid=0(root) 组=0(root) #whoami root ////////////////////////////////////////// ...
- C语言学习笔记--数组指针和指针数组
C 语言中的数组有自己特定的类型,数组的类型由元素类型和数组大小共同决定.(如 int array[5]类型为 int[5]) 1.定义数组类型 C 语言中通过 typedef 为数组类型重命名:ty ...
- ffmpeg部分编译选项
-enable-neon (如果使用了arm公司提供的neon加速技术,则可以并行的读取多个元素.参考网址:http://www.cnblogs.com/hrlnw/p/3723072.html) ...
- 用SSIS包导入数据
创建一个简单ETL包.打开 Step 1:创建新的Integration Services项目 在开始菜单中找到SQL Server Data Tools并打开,在Microsoft SQL Serv ...
- spl_autoload_register()和__autoload()2
这也是OO设计的基本思想之一.在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可.下面是一个实际的例子: class ClassA{ public f ...
- elasticsearch2.x ik插件
先来一个标准分词(standard),配置如下: curl -XPUT localhost:/local -d '{ "settings" : { "analysis&q ...