容斥原理,居然没想到……要补一下数论了

原题:

小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的倍数的更多相关文章

  1. [转]倍数提高工作效率的 Android Studio 奇技

    转自:http://android.jobbole.com/81687/ 倍数提高工作效率的 Android Studio 奇技 2015/10/08 · 技术分享 · 4 评论· Android S ...

  2. 51nod 1109 01组成的N的倍数

    用01 组成 N的最小倍数 这个BFS搜索就好. 类似这道:  ZOJ Problem Set - 1530 每次 要么是0 要么是1, 记入余数,和前驱. #include<bits/stdc ...

  3. Python练习题 029:Project Euler 001:3和5的倍数

    开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...

  4. 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 ...

  5. Oracle PL/SQL 找出100以内是3和5的倍数的数 循环语句

    循环: loop --执行代码 exit when 表达式;--当表达式为真退出循环.(注意,其编写位置决定循环为先判断还是先执行,相当于java的while或do-while) end loop; ...

  6. 用if else 判断是不是7的倍数等

    static void Main(string[] args)        {            while (true)            {                int b; ...

  7. Tyvj P1813 [JSOI2008]海战训练

    P1813 [JSOI2008]海战训练 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 为了准备高层峰会,元首命令武装部队必须处于高度戒备.警察将监视每一条 ...

  8. NYOJ--517--最小公倍数(大数打表)

    最小公倍数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致. 但也并非纯粹的偶然:60是个优秀的数字 ...

  9. 百度之星2017初赛A轮 1001 小C的倍数问题

    小C的倍数问题 Accepts: 1990 Submissions: 4931 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...

随机推荐

  1. 推荐一款免安装的在线Visio流程工具ProcessOn

    昨天收到一人的邮件,说某个软件叫ProcessOn是web版的visio,出于对技术知识的渴望以及自己的好奇所以对ProcessOn进行了一番体验.结果有点被这个软件给吸引上了,无论是在用户体验上,还 ...

  2. MySQL数据库远程连接

    12.00 MySQL数据库远程连接 参考: http://www.jb51.net/article/24508.htm http://www.linuxdiyf.com/viewarticle.ph ...

  3. zoj1530 bfs

    //Accepted zoj1530 270ms 40008KB #include <cstdio> #include <cstring> #include <iostr ...

  4. Ubuntu 14.10 下安装navicat

    1 下载navicat,网址http://www.navicat.com.cn/download,我下载的是navicat111_premium_cs.tar.gz 2 解压到合适的位置 3 进入解压 ...

  5. java generic type

    java generic type: 类型安全.类型参数化.不需要强制转换

  6. vijos 1776 关押罪犯

    带权并查集+贪心. #include<iostream> #include<cstdio> #include<cstring> #include<algori ...

  7. HDOJ-三部曲一(搜索、数学)-1013-Sudoku

    Sudoku Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total Submi ...

  8. Android自定义View绘图实现拖影动画

    前几天在"Android绘图之渐隐动画"一文中通过画线实现了渐隐动画,但里面有个问题,画笔较粗(大于1)时线段之间会有裂隙,我又改进了一下.这次效果好多了. 先看效果吧: 然后我们 ...

  9. 解决CSS小于12px的文字在谷歌浏览器显示问题

    做前端设计的人经常要接触CSS方面的问题,估计有不少人会遇到Chrome谷歌浏览器中CSS设置字体小于12px显示不正常,强创网络在做magento模板过程中就遇到了,起初以为是自己写的CSS的问题, ...

  10. D - 排列

    #include<cstdio> #include<algorithm> #include<string.h> using namespace std; #defi ...