HDU 1796 How many integers can you find(容斥原理)
题意
就是给出一个整数n,一个具有m个元素的数组,求出1-n中有多少个数至少能整除m数组中的一个数
(1<=n<=10^18.m<=20)
题解
这题是容斥原理基本模型。
枚举n中有多少m中元素的个数,在结合LCM考虑容斥。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const long long N=;
long long a[N],n,m,ans;
long long gcd(long long x,long long y){
if(y==)return x;
else return gcd(y,x%y);
}
long long lcm(long long x,long long y){
return x/gcd(x,y)*y;
}
void dfs(long long now,long long num,long long res,long long k){
if(res==){
if(num==)return;
long long tmp=n/num;
if(k&)ans+=tmp;
else ans-=tmp;
return;
}
if(now==m+)return ;
if(lcm(num,a[now])<=n)dfs(now+,lcm(num,a[now]),res-,k);
dfs(now+,num,res,k);
}
int main(){
while(scanf("%lld%lld",&n,&m)!=EOF){
n--;
for(long long i=;i<=m;i++)scanf("%lld",&a[i]);
for(long long i=;i<=m;i++)dfs(,,i,i);
printf("%lld\n",ans);
}
}
HDU 1796 How many integers can you find(容斥原理)的更多相关文章
- HDU 1796 How many integers can you find(容斥原理)
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- HDU.1796 How many integers can you find ( 组合数学 容斥原理 二进制枚举)
HDU.1796 How many integers can you find ( 组合数学 容斥原理 二进制枚举) 题意分析 求在[1,n-1]中,m个整数的倍数共有多少个 与 UVA.10325 ...
- HDU 1796 How many integers can you find (状态压缩 + 容斥原理)
题目链接 题意 : 给你N,然后再给M个数,让你找小于N的并且能够整除M里的任意一个数的数有多少,0不算. 思路 :用了容斥原理 : ans = sum{ 整除一个的数 } - sum{ 整除两个的数 ...
- HDU 1796 How many integers can you find(容斥原理)
题目传送:http://acm.hdu.edu.cn/diy/contest_showproblem.php?cid=20918&pid=1002 Problem Description ...
- HDU 1796 How many integers can you find 容斥入门
How many integers can you find Problem Description Now you get a number N, and a M-integers set, y ...
- hdu 1796 How many integers can you find 容斥定理
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- HDU 1796 How many integers can you find(容斥原理+二进制/DFS)
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- hdu 1796 How many integers can you find 容斥第一题
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- hdu 1796 How many integers can you find
容斥原理!! 这题首先要去掉=0和>=n的值,然后再使用容斥原理解决 我用的是数组做的…… #include<iostream> #include<stdio.h> #i ...
随机推荐
- 什么是2.5D与3D编辑模式
ZBrush®其实就是一个带有三维特性的二维软件,它不仅具有绘制二维图像的功能,而且也具有对三维物体进行编辑的功能,就是所谓的2.5D(Pixol技术). 学习ZBrush之前有必要了解一下2.5D的 ...
- 第十一章 Python之异常处理
异常 异常时程序运行时发生错误的信号(在程序错误时,则会产生一个异常,若程序没有处理,则会抛出该异常,程序的运行也随之终止) 常见的异常类型AttributeError 试图访问一个对象没有的树形,比 ...
- 路飞学城Python-Day20(元类的练习题)
练习一:在元类中控制把自定义类的数据属性都变成大写 class MyDef(type): def __new__(cls, class_name, class_attr, class_dic): up ...
- Pyhton学习——Day31
# 服务端和接收端的send和reve没有任何关系,只与协议之间有关系# 应用程序产生的数据一定会交给操作系统,并由操作系统往外发送# 发送端什么时候会清空自己的内存?# 收到接收端的ACK响应以后才 ...
- Django Views Decorator
Django的试图函数的装饰器主要有: HTTP请求方法 条件视图处理 GZip压缩 改变页眉 缓存 官网文档 HTTP请求方法 该装饰器是设置允许访问HTTP协议的方法,装饰器在django.vie ...
- 【技术翻译】SIFT算子原理及其实现 (一)介绍
介绍 匹配不同图片的特征是计算机视觉常见的问题. 当所有要匹配的图片很相似的时候(大小,方位),简单的角点检测算子就可以匹配,但是,当你的图片大小,方位不同的时候,你就要用到尺度不变特征变换(scal ...
- Lvs+heartbeat高可用高性能web站点的搭建
这是我们公司在实际的生产环境当中使用的一套东西,希望对大家有所帮助(实际的公网ip,我已经做了相应的修改): 说明:每台服务器需要有两块网卡:eth0连接内网的交换机,用私网ip,实现服务器间内部访问 ...
- HDU——T 1498 50 years, 50 colors
http://acm.hdu.edu.cn/showproblem.php?pid=1498 Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
- [JZOJ NOIP2018模拟10.21]
考试之前我刚刚领略到了特判的重要性,没想到T2的两个子任务还是写挂了,丢了20分 考试的感觉不行,一路打的都是暴力,正解的思路想到一半就断了推不下去 T1:逛公园 题目链接: https://jzoj ...
- validation-api参数校验
这里针对springboot项目结构 maven添加: <dependency> <groupId>javax.validation</groupId> <a ...