当前位置: 首页 > news >正文

容斥原理的并

文章目录

  • 简介
  • AcWing 890. 能被整除的数
    • 思路解析
    • CODE



简介

推荐题解:https://www.acwing.com/solution/content/126553/
画了图,清晰易懂,懒得打字了。
总之就是以下公式: S = S 1 + S 2 + S 3 − S 1 ∩ S 2 − S 1 ∩ S 3 − S 2 ∩ S 3 + S 1 ∩ S 2 ∩ S 3 \begin{align*} S = & S_1 + S_2 + S_3 \\ & - S_1 \cap S_2 - S_1 \cap S_3 - S_2 \cap S_3 \\ & + S_1 \cap S_2 \cap S_3 \end{align*} S=S1+S2+S3S1S2S1S3S2S3+S1S2S3
我们可以把这个式子推导到 n n n 维,奇加偶减。


AcWing 890. 能被整除的数

题目链接:https://www.acwing.com/activity/content/problem/content/960/

思路解析

筛出一个数的倍数,两个数的倍数 … n n n 个数的倍数,这就抽象成了 n n n 个集合的问题了。

那么如何表示选取哪几个集合(质数)呢?

  • 1 1 1 开始枚举到 n n n,将每个数看成二进制形式,如果说第 k k k 位是 1 1 1,那么就代表选第 k k k 个集合,反之不选。

如何知道被整除的数的个数?公式: n / p n / p n/p 下取整即可。

最后判断是奇数个还是偶数个,这个判断利用了二进制的一个性质:除了 2 0 2^0 20,其他所有位的和都是 2 2 2 的整数倍,所以说看是否为奇数就看它二进制最后一位是否为 1 1 1


CODE

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;typedef long long ll;  // 定义长整型别名为llconst int N = 20;  // 定义常量N为20
int n, m;  // 定义整型变量n和m
int p[N];  // 定义整型数组p,大小为Nint main(){scanf("%d%d", &n, &m);  	// 从输入中读取两个整数n和mfor(int i = 0; i < m; ++i) scanf("%d", &p[i]);  // 从输入中读取m个整数到数组p中int res = 0;  	// 初始化结果为0for(int i = 1; i < (1 << m); ++i){  // 遍历所有的子集int s = 0, t = 1;  	// 初始化s和tfor(int j = 0; j < m; ++j){  	// 遍历每一位if(i >> j & 1){  	// 如果第j位为1if((ll)t * p[j] > n){  	// 如果t乘以p[j]大于nt = -1;  	// 将t设置为-1break;  	// 跳出循环}t *= p[j];  // 更新ts++;  // 增加s}}if(t == -1) continue;  	// 如果t为-1,跳过当前循环if(s & 1) res += n / t;  // 如果s为奇数,增加n/t到reselse res -= n / t;  	// 否则,从res中减去n/t}cout << res << endl;  // 输出结果
}

相关文章:

容斥原理的并

文章目录 简介AcWing 890. 能被整除的数思路解析CODE 简介 推荐题解&#xff1a;https://www.acwing.com/solution/content/126553/ 画了图&#xff0c;清晰易懂&#xff0c;懒得打字了。 总之就是以下公式&#xff1a; S S 1 S 2 S 3 − S 1 ∩ S 2 − S 1 ∩ S 3 − S 2 …...

JavaSE第7篇:封装

文章目录 一、封装1、好处:2、使用 二、四种权限修饰符三、构造器1、作用2、说明3、属性赋值的过程 一、封装 封装就是将类的属性私有化,提供公有的方法访问私有属性 不对外暴露打的私有的方法 单例模式 1、好处: 1.只能通过规定的方法来访问数据 2.隐藏类的实例细节,方便…...

mysql数据库相关知识【MYSQL】

mysql数据库相关知识【MYSQL】 一. 库1.1 登录数据库管理系统1.2 什么是数据库1.2.1 mysqld与mysql 1.3 编码集和校验集1.3.1 什么是编码集和校验集1.3.2 查看库对应的编码集和校验集1.3.3 用指定的编码集和校验集 1.4 库的操作 一. 库 1.1 登录数据库管理系统 这个算是第一个…...

android studio 创建按钮项目

1&#xff09;、新建一个empty activity项目&#xff0c;切换到project视图&#xff1a; 2&#xff09;、修改app\src\main\res\layout\activity_main.xml文件&#xff0c;修改后如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <andr…...

gitee提交代码步骤介绍(含git环境搭建)

1、gitee官网地址 https://gitee.com; 2、Windows中安装git环境 参考博客&#xff1a;《Windows中安装Git软件和TortoiseGit软件》&#xff1b; 3、设置用户名和密码 这里的用户名和密码就是登录gitee网站的用户名和密码如果设置错误&#xff0c;可以在Windows系统的“凭据管理…...

【MyBatis-Plus】常用的插件介绍(乐观锁、逻辑删除、分页)

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于MyBatis-Plus的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.为什么要使用MyBatis-Plus中的插…...

DApp测试网络Ganache本地部署并实现远程连接

文章目录 前言1. 安装Ganache2. 安装cpolar3. 创建公网地址4. 公网访问连接5. 固定公网地址 前言 Ganache 是DApp的测试网络&#xff0c;提供图形化界面&#xff0c;log日志等&#xff1b;智能合约部署时需要连接测试网络。 Ganache 是一个运行在本地测试的网络,通过结合cpol…...

好用的硬盘分区工具,傲梅分区助手 V10.2

傲梅分区助手软件可以帮助用户在硬盘上创建、调整、合并、删除分区&#xff0c;以及管理磁盘空间等操作。它可以帮助你进行硬盘无损分区操作。 支持系统 目前这款软件支持 Windows 7、Windows 8、Windows 10、Windows 11 等个人系统&#xff0c;还支持 Windows 2012/2016/2019…...

【华为鸿蒙系统学习】- HarmonyOS4.0开发|自学篇

​ &#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 HarmonyOS 4.0 技术介绍&#xff1a; HarmonyOS三大特征&#xff1a; 1.实现硬件互助&#…...

Qt图像处理-Qt中配置OpenCV打开本地图片

本文讲解Qt中配置OpenCV过程并用实例展示如何使用OpenCV打开图片(windows环境下) 一、下载OpenCv 本文使用版本OpenCV-MinGW-Build-OpenCV-3.4.5 下载地址: https://codeload.github.com/huihut/OpenCV-MinGW-Build/zip/refs/heads/OpenCV-3.4.5 点击Code-local-Downlo…...

HTML中RGB颜色表示法和RGBA颜色表示法

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍HTML中RGB颜色表示法和RGBA颜色表示法以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题可以…...

Openwrt源码下载出现“The remote end hung up unexpected”

最近项目原因需要下载openwrt21.02版本源码&#xff0c;花费了很多时间&#xff0c;找到正确方法后&#xff0c;发现可以节省很多时间&#xff0c;记录下过程&#xff0c;方便自己&#xff0c;可能方便他人。 一.问题阐述 openwrt21.02下载链接如下&#xff1a; git clone -…...

Spring定时任务动态更改(增、删、改)Cron表达式方案实例详解

Spring定时任务动态更改&#xff08;增、删、改&#xff09;Cron表达式方案实例详解 最近在做一个需求&#xff0c;用户可以在平台上配置任务计划数据&#xff08;就是任务的执行和描述的相关信息&#xff0c;包括任务参数、cron表达式&#xff09;&#xff0c;配置后&#xf…...

常用登录加密之Shiro与Spring Security的使用对比

Shiro与Spring Security都是主流的身份认证和权限控制安全框架&#xff0c;Shiro偏向于前后端不分离平台&#xff0c;而Spring Security更偏向于前后端分离平台。接下来简单列一下两种登录验证的执行流程和示例&#xff0c;了解实际运用中的登录执行流程&#xff0c;然后重点剖…...

获取文件路径里的文件名(不包含扩展名)

“./abc/abc/llf.jpg” 写一个代码&#xff0c;让我获得“llf”这段字符串 import osfile_path "./abc/abc/llf.jpg" file_name os.path.splitext(os.path.basename(file_path))[0] print(file_name)在这个代码中&#xff0c;我们使用了os.path模块来处理文件路径…...

HiveSql语法优化二 :join算法

Hive拥有多种join算法&#xff0c;包括Common Join&#xff0c;Map Join&#xff0c;Bucket Map Join&#xff0c;Sort Merge Buckt Map Join等&#xff0c;下面对每种join算法做简要说明&#xff1a; Common Join Common Join是Hive中最稳定的join算法&#xff0c;其通过一个M…...

Leetcode—459.重复的子字符串【简单】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—459.重复的子字符串 算法思想 巧解的算法思想 实现代码 从第一个位置开始到s.size()之前&#xff0c;看s字符串是否是ss的子串 class Solution { public:bool repeatedSubstringPattern(string s) {return (s s).fin…...

Mac安装Typora实现markdown自由

一、什么是markdown Markdown 是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯&#xff08;John Gruber&#xff09;。 它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸收了很多在电子邮…...

前后端传参格式

前端发送 Serialize()方法 是指将一个抽象的JavaScript对象&#xff08;数据结构&#xff09;转换成字符串。这个字符串可以利用标准格式发送到服务器&#xff0c;被视为URL查询字符串或者POST数据&#xff0c;或者由于复杂的AJAX请求。这个方法使用的数据结构可以是JavaScri…...

【后端学前端】第三天 css动画 动态搜索框(定位、动态设置宽度)

1、学习信息 视频地址&#xff1a;css动画 动态搜索框&#xff08;定位、动态设置宽度&#xff09;_哔哩哔哩_bilibili 2、源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>test3</title>…...

AGENTS.md:为AI编码助手定制的项目说明书,提升人机协作效率

1. 项目概述&#xff1a;为什么你的项目需要一个“AI专属说明书”&#xff1f;如果你最近在尝试用GitHub Copilot、Cursor或者Claude Code来辅助开发&#xff0c;大概率遇到过这样的场景&#xff1a;你满怀期待地给AI下达一个指令&#xff0c;比如“帮我给这个React组件添加一个…...

从手机解锁合法化看DMCA、消费者权利与设备所有权的博弈

1. 从“越狱”到合法化&#xff1a;一场关于设备所有权的消费者权利运动2013年初&#xff0c;如果你在美国买了一部合约机&#xff0c;然后想把它带到另一家运营商使用&#xff0c;你面临的不仅仅是不兼容的技术问题&#xff0c;还可能是一项重罪——最高五年的监禁和五十万美元…...

HiveWE:现代化魔兽争霸III地图编辑器完全指南

HiveWE&#xff1a;现代化魔兽争霸III地图编辑器完全指南 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为魔兽争霸III原版地图编辑器缓慢的加载速度和复杂的操作而烦恼吗&#xff1f;HiveWE作为一款专…...

Claude code热门快捷指令清单

文章目录1、Claude code 热门快捷指令1.1、上下文控制类1.2、回退与实验类1.3、质量审查类1.4、模型与成本控制类1.5、自动化与远程协作类1.6、官方热门指令清单1、Claude code 热门快捷指令 Claude code热门快捷指令清单。分为上下文控制、回退与实验、质量审查、模型与成本控…...

ARM NEON指令集VLD1加载操作原理与优化实践

1. ARM SIMD指令集与VLD1加载操作概述在现代处理器架构中&#xff0c;SIMD&#xff08;Single Instruction Multiple Data&#xff09;技术已成为提升计算性能的关键手段。作为ARM架构中Advanced SIMD指令集&#xff08;俗称NEON&#xff09;的重要组成部分&#xff0c;VLD1系列…...

工业控制、通信设备、医疗仪器:MX30LF2G18AC-TI的嵌入式存储应用版图

MX30LF2G18AC-TI&#xff1a;2Gb SLC NAND闪存的工业级存储方案在工业控制、嵌入式系统以及通信设备等领域&#xff0c;非易失性存储器的选择直接影响设备的数据完整性、运行稳定性及长期供货保障。MX30LF2G18AC-TI是旺宏电子推出的一款2Gb SLC NAND闪存芯片&#xff0c;采用成…...

开发AI应用时借助Taotoken模型广场快速进行模型选型与测试

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 开发AI应用时借助Taotoken模型广场快速进行模型选型与测试 在开发基于大语言模型的应用或功能时&#xff0c;一个常见的挑战是如何…...

SMP架构下RTOS裸机启动的核心挑战与优化策略

1. SMP RTOS裸机启动的核心挑战在嵌入式系统领域&#xff0c;对称多处理&#xff08;SMP&#xff09;架构正逐渐成为高性能计算的主流选择。作为一名长期从事嵌入式系统开发的工程师&#xff0c;我见证了从单核到多核系统的演进过程。与传统的单核系统相比&#xff0c;SMP架构下…...

混沌工程实战:使用Roast平台提升分布式系统韧性

1. 项目概述&#xff1a;从“烤”代码到“烤”出高质量最近在跟几个做后端开发的朋友聊天&#xff0c;大家普遍有个痛点&#xff1a;项目迭代快了&#xff0c;代码质量就容易滑坡。单元测试覆盖率看着还行&#xff0c;但一上线&#xff0c;各种稀奇古怪的线上问题就冒出来了&am…...

别再死记硬背了!用PyTorch和TensorFlow动手实现池化层,5分钟搞懂Max Pooling和Average Pooling的区别

用PyTorch和TensorFlow实战池化层&#xff1a;5分钟可视化Max与Average Pooling差异 刚接触深度学习的开发者常被各种理论概念困扰&#xff0c;尤其是池化层这类看似简单却暗藏玄机的操作。与其死记硬背定义&#xff0c;不如打开Jupyter Notebook&#xff0c;用PyTorch和Tensor…...