数学知识:容斥原理

   能被整除的数:

#include<iostream>
using namespace std;
typedef long long LL;const int N = 20;
int p[N], n, m;//p[]存的i这个集合的质数的个数int main() 
{scanf("%d%d",&n,&m);for(int i = 0; i < m; i++) scanf("%d",&p[i]);int res = 0;//答案//每一个i代表一种可能的取法,最外层的循环遍历置2的m次方后,可以取完所有的取法//从1开始枚举,枚举到1 << m(左移m位。左移一位相当于乘2(因为低位补0,高位舍去,但是1的高位都是0所以不影响),右移一位相当于除2),即2的m次方//这个是用位运算来作枚举,从1枚举到2的m次方减1把i看做一个二进制数,如i = 5(十进制下)= 00101(二进制下),表示p1、p3被选了//最外层的循环的作用是枚举从1到2的m次方减1的数,然后求出每个数的能被 p1,p2,…,pm 中的数整除的个数//例:m=2//1<<m=100,100的十进制是4,所以i<4,即找3次,也就是零个的,单个的,两个的(交集)for(int i = 1; i < 1 << m; i++){int t = 1;//选中集合对应质数的乘积int s = 0;//选中的集合数量,即有几个1//枚举m个质数,依次计算容斥原理的公式,最多找0~<2也就是2个集合,也就是找单个集合的数量//后面多个集合的数量不看j<m了,而是看t*p[j]>n来确定数量for(int j = 0; j < m; j++){//选中一个集合,如果当前这位是1就选择。j从0开始增加,所以i每次右移的位数不同,注意i没有发生变化,因为不是i=i>>j,没有=号//注意这里是右移,跟上面的左移相反if(i >> j & 1){//如果t(已有的质数选法)乘上这个质数大于给定的数n,说明1∼n中的数不能被p整除,此时直接返回break,跳过这个质数if((LL)t * p[j] > n){    t = -1;break;}s++;//有一个1,选中的集合数量+1t *= p[j];//每选中一个集合,就乘起来他的质数个数}}//再将提取出的取法代入公式//如果t不等于-1(-1是给定的flag值)if(t == -1) continue;  //根据容斥原理公式,这里其实是模拟(-1)^n-1奇数个集合是加,偶数个集合是减if(s & 1) res += n / t;//选中奇数个集合, 则系数应该是1, n/t为当前这种状态的集合数量else res -= n / t;//反之则为 -1}printf("%d\n",res);return 0;
}

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

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

相关文章

Matlab中的app设计

1.窗口焦点问题&#xff1a; 窗口焦点问题&#xff1a;确保你的应用程序窗口正常处于焦点状态。有时&#xff0c;其他窗口的弹出或焦点切换可能导致应用程序最小化。点击应用程序窗口以确保它处于焦点状态。 窗口管理&#xff1a;确保你的 MATLAB 或操作系统没有未处理的错误或…

​测绘人注意,你可能会改变历史!

你也许想不到&#xff0c;曾经有一个测绘人员在进行实地测量作业时&#xff0c;在地图上就这么随手一标注&#xff0c;却让这个地方成为了如今的网红打卡地。 这个地方就是外地游客慕名而来的“宽窄巷子”&#xff0c;如果连这个地方都不知道的成都人&#xff0c;就应该不能算…

audio 标签动态src 且src是http无法播放问题

<audioref"audio" :src"src"alt"加载失败"controls/>src是动态传参的 无法播放因为动态src需要在赋值后对audio进行重载 this.$refs.audio.load()注意如果&#xff0c;src跟本项目地址IP端口协议不同&#xff0c;会出现跨域问题。audio标…

CSS3表格和表单样式

在传统网页中&#xff0c;表格主要用于网页布局&#xff0c;因此也成为网页编辑的主要工具&#xff1b;在标准化网页设计中&#xff0c;表格的主要功能是显示数据&#xff0c;也可适当辅助结构设计。本章主要介绍如何使用CSS控制表格和表单的显示效果&#xff0c;如表格和表单的…

Google Archive Patch 基础应用代码记录

项目地址 Google Archive Patch 前置 <!-- 差量应用模块 --> <dependency><groupId>com.google.archivepatcher</groupId><artifactId>archive-patch-applier</artifactId><version>1.0.4</version><scope>test</…

Linux并发与竞争(一)

Linux 并发与竞争 在讲 Linux 并发操作之前先了解一下并发和并行区别&#xff0c;这两个说法都是指多个操作同时被执行&#xff0c;不过这两个概念具有很大的差别&#xff0c;很多时候会混淆这两个概念。 并发强调执行多个操作的对象只能有一个&#xff0c;并行则不强调&…

第00章_写在前面

第00章_写在前面 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.comhttp://www.atguigu.com/) 一、MySQL数据库基础篇大纲 MySQL数据库基础篇分为5个篇章&#xff1a; 1. 数据库概述与MySQL安装篇…

快速入门:使用 Spring Boot 构建 Web 应用程序

前言 本文将讨论以下主题&#xff1a; 安装 Java JDK、Gradle 或 Maven 和 Eclipse 或 IntelliJ IDEA创建一个新的 Spring Boot 项目运行 Spring Boot 应用程序编写一个简单的 Web 应用程序打包应用程序以用于生产环境 通过这些主题&#xff0c;您将能够开始使用 Spring Boo…

Android NDK开发详解之NDK 使用入门

Android NDK开发详解之NDK 使用入门 下载 NDK 和工具创建或导入原生项目 原生开发套件 (NDK) 是一套工具&#xff0c;使您能够在 Android 应用中使用 C 和 C 代码&#xff0c;并提供众多平台库&#xff0c;您可使用这些平台库管理原生 activity 和访问实体设备组件&#xff0c;…

oracle (9)Storage Relationship Strut

Storage & Relationship Strut 存储和关系支柱 目标&#xff1a; 描述数据库的逻辑结构列出段类型其用途列出控制块空间使用的关键字获取存储结构信息 一、基础知识 1、数据库逻辑结构图 2、Types of Segments 段的类型 3、Storage Clause Precedence 存储条款的优先顺序 …

一文了解什么是WebSocket

WebSocket 允许我们创建“实时”应用程序&#xff0c;与传统 API 协议相比&#xff0c;该应用程序速度更快且开销更少。​ 一、WebSocket 是如何工作的 按照传统的定义&#xff0c;WebSocket是一种双工协议&#xff0c;主要用于客户端-服务器通信通道。它本质上是双向的&…

Spring Cloud之Docker的学习【详细】

目录 Docker 项目部署问题 总结 镜像与容器 Docker的安装 Docker基本操作 镜像相关命令 拉取镜像 镜像保存 删除镜像 镜像加载 容器相关命令 删除容器 数据卷 数据卷命令 数据挂载 自定义镜像 Dockerfile 案例 Docker-Compose Compose文件 Docker-Compos…

Termux SFTP如何实现远程文件传输

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…

CN考研真题知识点二轮归纳(3)

持续更新&#xff0c;上期目录&#xff1a; CN考研真题知识点二轮归纳&#xff08;2&#xff09;https://blog.csdn.net/jsl123x/article/details/134111760?spm1001.2014.3001.5501 1.TCP/IP 名称&#xff1a;传输控制协议/网络协议&#xff0c;是一个协议族&#xff0c;主…

数学知识:求组合数

求组合数 I&#xff1a; 注意&#xff1a;1~1w组数据 #include<iostream> using namespace std;const int mod 1e97; long long f[2010][2010];int main() {int n;scanf("%d",&n);//预处理for(int i0;i<2000;i){for(int j0;j<i;j){if(!j) f[i][j]…

力扣每日一题80:删除有序数组中的重复项||

题目描述&#xff1a; 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…

管网智慧化建设能为管网提供哪些优势?第3点特别值得注意!

关键词&#xff1a;智能管网、智慧管网、智慧管网建设、智慧燃气、气管网压力监测解决方案 随着信息技术的不断发展&#xff0c;数字城市的发展正在快速向智慧城市推进&#xff0c;而管网智慧化建设是目前智慧城市建设中不可或缺的一个重要举措。 因为早期铺设使用的排水管道…

MathType2024破解版激活序列号

MathType序列号是一款针对该软件而制作的激活工具&#xff0c;大家都知道这款软件在官方是需要花钱购买的&#xff0c;不然得话就只能试用。有很多功能都无法正常使用&#xff01;而本序列号却可以完美的解决这一难题&#xff0c;因为它可以破解并激活“MathType”&#xff0c;…

Android WMS——Dialog和Toast窗口创建(五)

前面文章介绍了 Activity 窗口创建的流程,这里我们在看一下 Dialog 和 Toast 窗口创建的流程。 一、Dialog窗口创建 Dialog 中创建 Window 是在其构造方法中完成。 1、Dialog显示 源码位置:/frameworks/base/core/java/android/app/Dialog.java private final WindowMana…

java实现下载文件压缩包

业务背景&#xff1a; 在开发过程中&#xff0c;我们会遇到需要对文件&#xff08;单个或多个&#xff09;进行压缩并下载的功能需求&#xff0c;这里记录一下压缩多个文件的实现过程&#xff0c;或许有更好的方式请大家补充 前端实现一个按钮调下载压缩包的接口 <button…