Hdu--1796(数论,容斥原理)

2014-09-05 01:01:28

How many integers can you find

Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4202    Accepted Submission(s): 1196


Problem Description
  Now you get a number N, and a M-integers set, you should find out how many integers which are small than N, that they can divided exactly by any integers in the set. For example, N=12, and M-integer set is {2,3}, so there is another set {2,3,4,6,8,9,10}, all the integers of the set can be divided exactly by 2 or 3. As a result, you just output the number 7.

 

Input
  There are a lot of cases. For each case, the first line contains two integers N and M. The follow line contains the M integers, and all of them are different from each other. 0<N<2^31,0<M<=10, and the M integer are non-negative and won’t exceed 20.
 
Output
  For each case, output the number.

 

Sample Input
12 2
2 3
 
Sample Output
7

 

思路:经典的容斥原理,枚举+容斥,(任1个数的公倍数) - (任2个数的公倍数) + (任3个数的公倍数)。。。。。

 1 /*************************************************************************
 2     > File Name: hdu1796.cpp
 3     > Author: Nature
 4     > Mail: 564374850@qq.com 
 5     > Created Time: Thu 04 Sep 2014 09:53:53 PM CST
 6 ************************************************************************/
 7 
 8 #include <cstdio>
 9 #include <cstring>
10 #include <cstdlib>
11 #include <cmath>
12 #include <iostream>
13 #include <algorithm>
14 using namespace std;
15 int Gcd(int a,int b) { return b == 0 ? a : Gcd(b,a % b); }
16 int Lcm(int a,int b) { return a / Gcd(a,b) * b; }
17 
18 int n,m;
19 int v[15];
20 int ans;
21 
22 void Dfs(int p,int cnt,int l,int tar){
23     if(p > m){
24         //printf("l : %d,tar : %d\n",l,tar);
25         if(cnt == tar){
26             int tmp = (n - 1) / l;
27             ans += (tar & 1) ? tmp : -tmp;
28         }
29         return;
30     }
31     if(m - p + 1 + cnt < tar)
32         return;
33     Dfs(p + 1,cnt,l,tar);
34     int tl = Lcm(l,v[p]);
35     if(tl < n && cnt < tar)
36         Dfs(p + 1,cnt + 1,tl,tar);
37 }
38 
39 int main(){
40     while(scanf("%d %d",&n,&m) != EOF){
41         for(int i = 1; i <= m; ++i){
42             scanf("%d",&v[i]);
43             if(!v[i]) --i,--m;
44         }
45         ans = 0;
46         for(int i = 1; i <= m; ++i)
47             Dfs(1,0,1,i);
48         printf("%d\n",ans);
49     }
50     return 0;
51 }

 

转载于:https://www.cnblogs.com/naturepengchen/articles/3957132.html

倍福--手动加入第三方伺服的配置 客户在没有硬件情况下,希望手动配置硬件,添加第三方驱动器,本文介绍其操作流程 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 操作步骤 3 2.1. 添加电机XML文件 3 2.2. 创建EtherCAT 3 2.3. 添加新建项 3 2.4. 选择型号 4 2.5. 关联NC轴 5 软硬件版本 1.1. 倍福Beckhoff 1.1.1. 控制器硬件 TwinCAT控制制器,PC或者EPC,包括: 嵌入式控制器:CX5020- 阅读详情

相关推荐

Rockchip硬件编码实战:5分钟搞定RK3588上的H.265视频压缩(附FFmpeg集成指南)

本文深入解析了在Rockchip RK3588平台上利用硬件编码器实现高效H.265视频压缩的完整实战流程。文章详细介绍了MPP库的基础使用、FFmpeg集成方法,并重点分享了零拷贝、多实例编码等关键性能优化技巧,帮助开发者充分发挥RK3588的硬件编码能力,实现从YUV原始数据到高质量H.265码流的高效转换。

h6i7j8的博客 1098

HDU - 1796 容斥原理

昨天鸽了 题目连接 大意是给一个n和一个共有m个数的集合,让求出[1,n)中有多少个数能整除集合中的某一个或多个数 因为m大小为10,所以很容易想到是容斥原理 在[1,n)中能整除数A的数的个数为(n-1)/A可以O(1)算出来,而这个A是可以枚举的(A肯定是集合中某个子集的的最小公倍数,用容斥枚举出来这些子集,子集大小为奇就加,偶数就减)举个例子集合为{2,3,5}那么答案=2的倍数的个...

Rwqgmz的博客 278

突发环境事件怎么模拟?用Python+GIS实现高斯烟团模型(附完整代码)

本文详细介绍了如何利用Python与GIS技术实现高斯烟团模型,用于模拟化工泄漏等突发环境事件的动态扩散过程。通过核心原理讲解、参数快速获取方案、Python代码实现及GIS可视化集成,为环境应急人员提供了一套完整的解决方案。特别适合危险品运输事故等瞬态污染场景的应急决策支持。

weixin_33692284的博客 486

容斥原理+模板题HDU-1796

容斥原理描述如下: 说大白话就是求几个集合的并集,要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所 有两个集合相交的部分,再加上所有三个集合相交的部分,再减去所有四个集合相交的部分...依此类推,一直计算到 所有集合相交的部分。 最简单的就是两个集合的并集: 所以数学公式就可以表示为 |A∪B|=|A|+|B|-|A∩B|。 对于三个集合,

yo_bc的博客 913

NVIDIA DGX Spark实战指南:从开箱到部署200B参数大模型

本文详细介绍了NVIDIA DGX Spark桌面AI超级计算机的开箱体验与实战部署指南。文章深入解析了其Grace Blackwell架构与128GB统一内存的核心优势,并逐步演示了从系统初始化、运行200B参数大模型到进行QLoRA微调的全过程。该设备将高达1 PetaFLOP的AI算力浓缩于桌面,为开发者和研究团队提供了本地化、高性能的AI开发与部署一体化解决方案。

weixin_29274969的博客 2231

浅谈专项测试之弱网络测试

浅谈专项测试之弱网络测试 一.弱网络测试背景 移动端产品的使用并非完全都是在流畅的wifi环境,大部分用户主要使用4G,3G,2G等网络,另外因为移动端产品使用的场景多变,如进公交,上地铁,坐电梯,使得弱网测试显得尤为重要。考虑到各种场景的客户端展示及容错,提升产品的印象和用户体验,提高产品的健壮性,弱网测试必不可少。 二.弱网络测试建议 网下需要进行功能点测试,无网络测试,网络切换测试等,测试过程除了关注功能点的实现,还应关注用户体验等各个方面 三.弱网络测试通用功能点总结 四.弱网络测试用例实例

ITstudy001的博客 1011

hdu1796(容斥原理)

题目链接:hdu1796 容斥原理介绍 题目大意:给出m个数,在1~n(不包括n)之间找出所有能对m个数整除的 思路:枚举出所有可能组合,求出每一种组合的最小公倍数,运用容斥原理累加所有情况 #include #include #include #include #include using namespace std; #define LL __int64 int a[15

no pains,no gains 1286

PHP实战:5分钟搞定SM4国密加密算法集成(附完整代码)

本文详细介绍了如何在PHP项目中快速集成SM4国密加密算法,提供完整的代码实现和实际应用示例。从算法原理到核心代码解析,再到性能优化与安全实践,帮助开发者高效实现数据加密功能,满足金融、政务等领域的合规需求。

weixin_29315569的博客 354

HDU 1796 (容斥)

直接二级制枚举子集,按照容斥加减加减就行了。 #include #include #include #include using namespace std; typedef long long LL; LL N , M; const int maxn = 20; LL s[maxn]; LL gcd(LL a , LL b) { if(b>a) swap(a,b);

愿岁月如歌 277

46.qt quick-自定义非常好看的qml虚拟软键盘-支持换肤、动态加载移除语言(二)

在上章我们学习了45.qt quick-qml虚拟软键盘详解(一)_诺谦的博客-优快云博客 接下来我们便来自定义一款好看的qml软键盘.如下图所示: 支持背景更换、支持动图: 支持动态加载移除语言: 支持拖拽、自由缩小放大: 支持定位坐标: ...

抵抗时间扭曲,坚持做一件有意义的事 4674

Logstash安装部署

1. 部署及安装所用的用户不能是root。

lmj3732018的博客 4294

HDU - 1796(容斥原理+特殊情况0)

hdu1796 题解:在dfs之前不要刻意删去一些数(这些数是其它数的倍数),注意0,在输入的时候就删去它. #include<bits/stdc++.h> using namespace std; typedef long long LL; const int maxn=2e5+10; LL n; int m; LL a[25],b[25]; int cnt; LL ans=0; void dfs(int pos,LL flag,LL t,int f) { if(t>n)retu

qq_41856950的博客 220

Isaac Sim 入门教程(四)强化学习策略训练宇树人形机器人四足机器人示例

isaac_sim_policy_example Extension 是在 Isaac Sim 中部署 Isaac Lab 强化学习策略的一个框架和一组辅助函数。有关在 Isaac Sim 中训练和构建策略的详细信息,请访问在 Isaac Sim 中部署策略。该扩展程序默认已启用。如果被禁用,可在扩展管理器中搜索 isaacsim.robot.policy.example 重新启用。要运行下面的示例,请激活 “视窗”>“示例”>“机器人示例”,这将打开 “机器人示例 ”选项卡。

机器人控制与仿真应用 3927

HDU1796(数论,容斥原理)

也是容斥原理的应用,这篇博客用了DFS,比较明晰。原文地址:http://www.cnblogs.com/jackge/archive/2013/04/03/2997169.html lHow many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768

say_c_box的博客 454

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

容斥原理学习(Hdu 4135,Hdu 1796)

题目链接Hdu4135 Co-prime Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1412Accepted Submission(s): 531 Problem Description Given a numbe...

weixin_34161032的博客 128

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

容斥原理(二进制实现)

链接: hdu 1796 How many integers can you find 代码: #include &lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; const int maxn = 112; ll a[maxn],num; ll GCD(ll x,ll y) { return x%y==...

qq_41680251的博客 269

近四天天学习总结

看了几天自己找到数论的博客,老师有发过来了新的……所以又开始看新的博客。 那个PE因为太难了大概是在我心情很好特别想打代码之前不可能在看了。。。才十几个题而已,我也太废了,哎,天天沉迷于自己的废物,毫无起色。 看了个博弈论的题目,真的特别的模板化,,非常明显的是个变形的nim博弈,连题目都不带伪装的!(可能变形那里会坑一下我这种模板没背清楚+不好好看题目的?但是样例给的很舒爽,比某客好多了,好...

雨潇的博客 176

容斥原理基础例题(HDU 2204, HDU 3208, HDU 1796)

HDU 2204 题目 求[1, N](1≤N≤1018)(1≤N≤1018)(1 \le N\le 10^{18})之间能被表示成mkmkm^k的数的数量。 容斥思想 1018约等于2641018约等于26410^{18} 约等于 2^{64} 预处理质数:int prime[20] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, ...

王大凤的博客 336

HDU-1796 容斥+dfs+lcm

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1796 题意:给一个集合set和一个数n,让你构建一个新集合。新集合中的任意一个元素都能被set中某个元素整除,而且新集合中的元素要小于n,问你这个新集合中最多有多少个元素 题解:这是cls挂的容斥专题的B题,一开始我的思路就是错的,然后去瞟了一眼题解,然后恍然大悟,又重新搞一发,

Li_Yufeng的博客 440

HDU 1796 How many integers can you find

How many integers can you find

ZJLORD 270

简单容斥定理-hdu-1796-How many integers can you find

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1796 题目大意: 给一个n,给m个数,求出1~n中能够被m中某个数整除的数的个数。 解题思路: 简单容斥,不解释。 先对m个除掉0,然后数排序,然后容斥。每次求出前面的最小公倍数。 注意: 10 2 2 11   keys:4 10 2 11 2  keys:4  代码:

cc_again的专栏 1176

互素,容斥原理,HDU4135 POJ2407 HDU1796

(三道题目的完整代码在文章最后) 这几道题都是有关互素和容斥原理的问题, 要求1~n 中与 m互质的自然数的个数的基本思路是:先找到m的所有质因数然后用容斥原理找出在1~n的范围内与m互质的数的个数。 以HDU4135(Coprime)为例。点击看原题 该题让我们找出在[a,b]内能被m整除的数目。求出1~m和1~n-1 的,相减即可。 首先是找出m的所有质因数: vector

Chirfen_Z的博客 535

[hdu 1796 How many integers can you find]容斥原理模板

hdu 1796 How many integers can you find 容斥原理模板 题目链接:hdu 1796 How many integers can you find  题意:给你一个数N,和有一个M个数的集合a1,a2,...,aM。0 分析:首先考虑特殊情况,N 当M==1,答案就是N / a1。 当M==2,答案就是N / a1 + N / a2 - N / l

Fighting! 494

hdu 1796

HDU 1796 How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12255 Accepted Submission(s): 3665 Problem Descript...

miracle from life 265

hdu1796 How many integers can you find(容斥原理裸)

http://acm.hdu.edu.cn/showproblem.php?pid=1796 题意:求小于n的数中有多少个能被集合m中元素整除。 思路:挑战上的裸题,还基本是看的别人的思路,只学了一种深搜。就如书上所说我们利用的是m比较小的条件,容斥原理说白了就是被覆盖奇数次的个数加上,被覆盖偶数次的个数减去,以达到不重复计算的效果。 比如:集合m的元素有2、3、4、5

Iguodala的博客 507

hdu1796(容斥原理基本运用)

传送门 题意:求n以内能够被所给的集合中的数整除的数的个数。 思路:很容易想到容斥原理,先找出1...n内能被集合中任意一个元素整除的个数,再减去能被集合中任意两个整除的个数,即能被它们两只的最小公倍数整除的个数,因为这部分被计算了两次,然后又加上三个时候的个数,然后又减去四个时候的倍数...所以深搜,最后判断下集合元素的个数为奇还是偶,奇加偶减。 为什么是最小公倍数 比如(6,9)其实18的...

henucm的博客 537

ACM 容斥原理

VJ 点击打开链接 参考 点击打开链接  非常好的译文:点击打开链接 容斥原理的想法就是求多个集合的并集.所以要先设计好集合. 组合数学问题中,正面解决会困难,常用方法是正难则反,使用容斥原理求反向在用全集减去.将对立面的限制条件分析清楚. eg 求区间互质的数的个数,则用除法等计算出一个数的倍数的方法再减去.  UVa 11806 Cheerleaders 求k个石子放

gg_gogoing的专栏 6644
上一篇: Hdu--4983(数论,欧拉函数)
下一篇: Uva--1626(动规,路径)
dingdi3021
博客等级 码龄11年 1粉丝 230原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值