acwing算法基础之数学知识--容斥原理

目录

  • 1 基础知识
  • 2 模板
  • 3 工程化

1 基础知识

题目描述:给定整数n和m个不同的质数,p1,p2,…pm,求1~n中能被这m个质数中至少一个质数整除的数有多少个。其中n和 p i p_i pi 1 0 9 10^9 109以内,而m在16以内。

容斥原理:
有两个集合 A A A B B B,求总和 ∣ A ∪ B ∣ |A\cup B| AB,答案为
∣ A ∪ B ∣ = ∣ A ∣ + ∣ B ∣ − ∣ A ∩ B ∣ |A\cup B|=|A| +|B| - |A\cap B| AB=A+BAB
有三个集合 A A A B B B C C C,求总和 ∣ A ∪ B ∪ C ∣ |A\cup B\cup C| ABC,答案为
∣ A ∪ B ∪ C ∣ = ∣ A ∣ + ∣ B ∣ + ∣ C ∣ − ∣ A ∩ B ∣ − ∣ A ∩ C ∣ − ∣ B ∩ C ∣ + ∣ A ∩ B ∩ C ∣ |A\cup B \cup C|=|A|+|B|+|C|-|A\cap B|-|A\cap C|-|B\cap C|+|A\cap B \cap C| ABC=A+B+CABACBC+ABC

进一步抽象,
某个类有 n n n中不同的属性,记为 P i P_i Pi(其中 i = 1 , 2 ⋯ n i=1,2\cdots n i=1,2n),拥有属性 P i P_i Pi的对象构成集合 S i S_i Si,那么对象总和为,
∣ ∪ i = 1 n S i ∣ = ∑ i ∣ S i ∣ − ∑ i < j ∣ S i ∩ S j ∣ + ∑ i < j < k ∣ S i ∩ S j ∩ S k ∣ − ⋯ + ( − 1 ) n − 1 ∣ S 1 ∩ S 2 ⋯ ∩ S n ∣ |\cup_{i=1}^{n} S_i|=\sum_{i}|S_i|-\sum_{i<j}|S_i\cap S_j|+\sum_{i<j<k}|S_i\cap S_j \cap S_k| - \cdots +(-1)^{n-1}|S_1\cap S_2 \cdots \cap S_n| i=1nSi=iSii<jSiSj+i<j<kSiSjSk+(1)n1S1S2Sn
上式即为容斥原理。

解题思路:用容斥原理进行求解,且利用二进制表示中的1表示第i个质数选不选,以此计算出每一项。
C++代码如下,

#include <iostream>using namespace std;const int N = 20;
int n, m;
int p[N];int main() {cin >> n >> m;for (int i = 0; i < m; ++i) cin >> p[i];int res = 0;for (int i = 1; i < 1 << m; ++i) {int t = 1;int cnt = 0;for (int j = 0; j < m; ++j) {if (i >> j & 1) {cnt += 1;if ((long long)t * p[j] > n) {t = -1;break;}t = (long long)t * p[j];}}if (t != -1) {if (cnt % 2 == 1) {res += n / t;} else {res -= n / t;}}}cout << res << endl;return 0;
}

2 模板

暂无。。。

3 工程化

暂无。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/171371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataGrip 2023.2.3(IDE数据库开发)

DataGrip是一款数据库集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于数据库管理和开发。 DataGrip提供了许多强大的功能&#xff0c;如SQL语句编辑、数据库连接管理、数据导入和导出、数据库比较和同步等等。它支持多种数据库&#xff0c;如MySQL、PostgreSQL、Ora…

了解JavaScript中属性遍历的三种方法

在JavaScript中&#xff0c;我们经常需要遍历对象的属性。这可以通过使用for in、Object.keys和Object.getOwnPropertyNames三种方法来实现。但是&#xff0c;这三种方法之间有什么区别呢&#xff1f;在本文中&#xff0c;我们将深入探讨这个问题&#xff0c;并提供一些示例代码…

Unity技美35——再URP管线环境下,配置post后期效果插件(post processing)

前两年在我的unity文章第10篇写过&#xff0c;后效滤镜的使用&#xff0c;那时候大部分项目用的还是unity的基础管线&#xff0c;stander管线。 但是现在随着unity的发展&#xff0c;大部分项目都用了URO管线&#xff0c;甚至很多PC端用的都是高效果的HDRP管线&#xff0c;这就…

位图及有关海量数据处理

bitset 1.给40亿个不重复的无符号整数&#xff0c;没排过序&#xff0c;给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个中 ①.如果用排序加二分查找&#xff0c;40亿个数需要16g内存&#xff0c;内存开不出这么大连续空间 ②.每个值映射一个比特位&#xff0c;…

基于Haclon的图形镜像案例

项目要求&#xff1a; 图为HALCON的例图“green-dot”&#xff0c;请将其中的圆形图案按水平和垂直两个方向分别进行镜像。 项目知识&#xff1a; 首先要用BLOB分析的方法&#xff0c;得到圆形图案的目标区域&#xff0c;再对其进行镜像。 在HALCON中与镜像相关的算子为mirr…

笔记,B+树

B树面对的场景&#xff0c;是一个有10亿行的表&#xff0c;希望某一列是有序的。这么大的数据量&#xff0c;内存里放不下&#xff0c;需要放在硬盘里。结果&#xff0c;原本运行于内存的二叉树&#xff0c;就升级为B树了。 在二叉树中&#xff0c;每个节点存储着一个数字&…

基于Eclipse+Swing+MySQL开发的借贷平台

基于Swing的借贷平台 项目介绍&#x1f481;&#x1f3fb; 本项目是一个基于Java JDBC的银行管理系统。开发环境为MyEclipse2014&#xff0c;数据库使用MySQL V5.5&#xff0c;操作系统为Windows 7 64位。 主要功能包括用户开户、存款、取款、转账、查询余额、修改密码和销户等…

洛谷P1047题 校门外的树

[NOIP2005 普及组] 校门外的树 题目描述 某校大门外长度为 l l l 的马路上有一排树&#xff0c;每两棵相邻的树之间的间隔都是 1 1 1 米。我们可以把马路看成一个数轴&#xff0c;马路的一端在数轴 0 0 0 的位置&#xff0c;另一端在 l l l 的位置&#xff1b;数轴上的每…

两巨头Facebook 和 GitHub 联手推出 Atom-IDE

9月13日&#xff0c;GitHub 宣布与 Facebook 合作推出了 Atom-IDE —— 它包括一系列将类 IDE 功能带到 Atom 的可选工具包。初次发布的版本包括更智能、感知上下文的自动完成&#xff1b;导航功能&#xff0c;如大纲视图和定义跳转(outline view and goto-definition)&#xf…

生态对对碰|华为OceanStor闪存存储与OceanBase完成兼容性互认证!

近日&#xff0c;北京奥星贝斯科技有限公司 OceanBase 数据库与华为技术有限公司 OceanStor Dorado 全闪存存储系统、OceanStor 混合闪存存储系统完成兼容性互认证。 OceanBase 数据库挂载 OceanStor 闪存存储做为数据盘和日志盘&#xff0c;在 OceanStor 闪存存储系统卓越性能…

Redis当中的BitMap,实现github打卡功能

写在开头 本文参考原文 BitMap Redis中的BitMap同我们所使用的算法当中的bitmap是相同的道理。简单来说就是使用二进制位&#xff0c;每一位的0/1状态表示信息。 二进制表示的优势&#xff1a; 大大节省空间。如两位二进制位00、01、10、11可以表示四种状态 Redis当中提供了…

css优化滚动条样式

css代码&#xff1a; ::-webkit-scrollbar {width: 6px;height: 6px; }::-webkit-scrollbar-track {background-color: #f1f1f1; }::-webkit-scrollbar-thumb {background-color: #c0c0c0;border-radius: 3px; }最终样式&#xff1a;

华为OD机试真题-围棋的气-2023年OD统一考试(C卷)

题目描述: 围棋棋盘由纵横各19条线垂直相交组成,棋盘上一共19x19=361个交点,对弈双方一方执白棋,一方执黑棋,落子时只能将棋子置于交点上。 “气”是围棋中很重要的一个概念,某个棋子有几口气,是指其上下左右方向四个相邻的交叉点中,有几个交叉点没有棋子,由此可知: …

TPLink-Wr702N 通过OpenWrt系统打造打印服务器实现无线打印

最近淘到了一个TPLink-Wr702N路由器&#xff0c;而且里面已经刷机为OpenWrt系统了&#xff0c;刚好家里有一台老的USB打印机&#xff0c;就想这通过路由器将打印机改为无线打印机&#xff0c;一番折腾后&#xff0c;居然成功了&#xff0c;这里记录下实现过程&#xff0c;为后面…

flink源码分析之功能组件(二)-kubeclient

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。其中kubeclient上一个系列介绍过,为了系列完整性,这里“copy”一下。 kubeclient组件…

electron+vue3全家桶+vite项目搭建【26】electron本地安装Vue Devtool插件,安装浏览器扩展

文章目录 引入获取vue devtool导入插件排除插件的npm脚本最终效果 引入 demo项目地址 Vue Devtools插件是vue项目必备插件&#xff0c;它是安装在浏览器里的&#xff0c;而咱们的electron中实际就包含了一个浏览器&#xff0c;同理它也可以加载浏览器插件 获取vue devtool 直…

【开源】基于Vue+SpringBoot的食品生产管理系统

项目编号&#xff1a; S 044 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S044&#xff0c;文末获取源码。} 项目编号&#xff1a;S044&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3…

WIFI模块(esp-01s)获取网络时间与天气信息

目录 一、硬件连接 二、获取网络时间 1、AT指令集 2、具体操作 三、获取天气信息 1、心知天气注册 2、AT指令集 3、具体操作 4、json格式检查 一、硬件连接 WiFi模块的RX连接TTL模块的TX&#xff0c; WiFi模块的TX连接TTL模块的RX&#xff0c;电源与地接对。 插入电脑…

Python 安装Vue依赖包发生异常:npm ERR! notsup Required: {“node“:“^18.17.0 || >=20.5.0“}

异常&#xff1a; 原因&#xff1a;node和npm要求升级为高版本 解决&#xff1a;重新安装node环境 &#xff08;1&#xff09; 官网下载Node.js &#xff08;2&#xff09;双击安装node.js &#xff08;3&#xff09;运行查看

智能优化算法应用:基于蝗虫算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蝗虫算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蝗虫算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝗虫算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…