【P1813】8的倍数
容斥原理,居然没想到……要补一下数论了
原题:
小x最近对数字8很感兴趣,有8进制,2008奥运会之类的。
现在小x想知道,在[x,y]区间里,有多少个数能被8整除。
小y觉得题目太简单,于是给出n个其他数,问在[x,y]区间里,有多少个数能被8整除且不能被这n个数整除。
1≤n≤15,1≤x≤y≤10^9,N个数全都小于等于10^4大于等于1。
x-y区间这个问题,可以搞前缀和,求1-(x-1)和1-y,然后减
枚举2^n种 n个因子是否使用 的情况,然后搞8和 当前情况使用因子 的lcm,用x-1或y除这个lcm,得到在这个范围内能被lcm整除的有几个,如果用了奇数个,答案就减,偶数个就加
搞lcm的时候,如果lcm已经大于x-1或y,就不用再往下搞
代码;
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int gcd(int x,int y){return (y)?gcd(y,x%y):x;}
int n,a[],xx,yy;
bool use[];
int ansx,ansy,bowl=;
void dfs(int x,int y){
if(x>n){
long long lcm=; int ge=;
for(int i=;i<=n;i++)if(use[i]){
lcm*=a[i]/gcd(lcm,a[i]);
if(lcm>y) break;
ge++;
}
if(ge%) bowl-=y/lcm;
else bowl+=y/lcm;
return ;
}
use[x]=false; dfs(x+,y);
use[x]=true; dfs(x+,y);
}
int main(){//freopen("ddd.in","r",stdin);
memset(use,,sizeof(use));
cin>>n;
for(int i=;i<=n;i++) cin>>a[i];
cin>>xx>>yy;
dfs(,yy); ansy=bowl;
bowl=;
dfs(,xx-); ansx=bowl;
cout<<ansy-ansx<<endl;
return ;
}
【P1813】8的倍数的更多相关文章
- [转]倍数提高工作效率的 Android Studio 奇技
转自:http://android.jobbole.com/81687/ 倍数提高工作效率的 Android Studio 奇技 2015/10/08 · 技术分享 · 4 评论· Android S ...
- 51nod 1109 01组成的N的倍数
用01 组成 N的最小倍数 这个BFS搜索就好. 类似这道: ZOJ Problem Set - 1530 每次 要么是0 要么是1, 记入余数,和前驱. #include<bits/stdc ...
- Python练习题 029:Project Euler 001:3和5的倍数
开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...
- Codeforces Round #276 (Div. 1) B. Maximum Value 筛倍数
B. Maximum Value Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/484/prob ...
- Oracle PL/SQL 找出100以内是3和5的倍数的数 循环语句
循环: loop --执行代码 exit when 表达式;--当表达式为真退出循环.(注意,其编写位置决定循环为先判断还是先执行,相当于java的while或do-while) end loop; ...
- 用if else 判断是不是7的倍数等
static void Main(string[] args) { while (true) { int b; ...
- Tyvj P1813 [JSOI2008]海战训练
P1813 [JSOI2008]海战训练 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 为了准备高层峰会,元首命令武装部队必须处于高度戒备.警察将监视每一条 ...
- NYOJ--517--最小公倍数(大数打表)
最小公倍数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致. 但也并非纯粹的偶然:60是个优秀的数字 ...
- 百度之星2017初赛A轮 1001 小C的倍数问题
小C的倍数问题 Accepts: 1990 Submissions: 4931 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...
随机推荐
- Linux登陆和欢迎信息修改
edit file: /etc/issue,/etc/motd 这样还改不了,生成的脚本在目录/etc/update-motd.d/中: 假如要打开一个文本文件,可以修改10-help-text: ( ...
- [转]android Intent机制详解
转自:http://blog.csdn.net/t12x3456/article/details/7688154 1.什么是Intent Intent是一种运行时绑定(run-time binding ...
- [Windows驱动]驱动包(Driver Packages)
在windows下安装一个驱动,我们你需要把所有需要的软件打包-称为驱动包.驱动包里包括系统提供的给所有设备类使用的一般安装工具,还包括了设备商提供的设备特定的组件.下面我们就来看看驱动包里具体需要哪 ...
- hdu 2055
PS:上课的时候敲的..这道题简单..一次AC,不多说了.. 代码: #include "stdio.h"int main(){ int i,n,y; char x,a[26],b ...
- Android无限循环轮播广告位Banner
Android无限循环轮播广告位Banner 现在一些app通常会在头部放一个广告位,底部放置一行小圆圈指示器,指示广告位当前的页码,轮播展示一些图片,这些图片来自于网络.这个广告位banner ...
- Oracle数据库中char, varchar, nvarchar的差异
1. char 固定长度,最长n个字符. 2. varchar 最大长度为n的可变字符串. (n为某一整数,不同数据库,最大长度n不同) char和varchar区别: ...
- GET请求和POST请求简单说明
一.概述 * HTTP/1.1协议共定义了8中请求方法:OPTIONS, HEAD, GET, POST, PUT, DELETE, TRACE, CONNECT. * GET方法和POST是我们使用 ...
- oracle疑难杂症问题
在虚拟机中安装了oracle10g,由于虚拟机的空间有限,看到磁盘空间快没了,就手贱把oracle目录中的空文件夹(E:\oracle\product\10.2.0\flash_recovery_ar ...
- SecureCRT rz和sz命令不可用,安装lrzsz
1.从网站下载 lrzsz-x.xx.xx.tar.gz2.解压文件[root@localhost src]# tar zxvf lrzsz-0.12.20.tar.gz3.安装[root@local ...
- web程序调试方法
1.火狐浏览器查看链接指向的后台方法(controller方法) f12 进入firebug 点击bug旁边的按钮 即第一排第二个按钮 将鼠标划到想要找的链接 在firebug中显示响应的后台跳转.d ...