备战蓝桥杯---组合数学2

本专题主要介绍容斥原理。

大家高中的时候肯定接触过韦恩图,容斥原理比较通俗的理解就是减去所有可能并加上重叠的部分。

我们直接看公式:

知道后,我们先看道模板题:

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[6],n;
signed main(){
    a[0]=2;
    a[1]=5;
    a[2]=11;
    a[3]=13;
    while(cin>>n){
        int sum=0;
        for(int i=0;i<=(1<<4)-1;i++){
            int cnt=0;
            int ww=1;
           for(int j=0;j<4;j++){
               if((i>>j)&1==1){
                   ww*=a[j];
                   cnt++;
               }
           }
            if(cnt%2==0) sum+=n/ww;
            else sum-=n/ww;
        }
        printf("%lld\n",sum);
    }
}

接下来看一道有趣的题:

下面是分析:

首先,题目应该改为被1只及以上。同时10^4,显然不能容斥原理,但我们可以借鉴它先减后弥补的思想。

下面是解法(十分的巧妙):

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,x;
map<int,int> mp;
int gcd(int a,int b){
    while(b){
        int tmp=b;
        b=a%b;
        a=tmp;
    }
    return a;
}
signed main(){
    scanf("%lld%lld",&n,&m);
    for(int i=1;i*i<=m;i++){
        if(m%i==0){
            mp[i]=0;
            mp[m/i]=0;
        }
    }
    mp.erase(m);
    for(int i=1;i<=n;i++){
        scanf("%lld",&x);
        int yy=gcd(x,m);
        for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++){
            if((it->first)%yy==0) mp[it->first]=1;
        }
    }
    int sum=0;
    for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++){
        if(it->second==0) continue;
        int num=m/(it->first);
        sum+=((it->first)*(num))*(num-1)/2*(it->second);
        for(map<int,int>::iterator it1=it;it1!=mp.end();it1++){
            if(it1==it) it1++;
            if(it1==mp.end()) break;
            if((it1->first)%(it->first)==0) mp[it1->first]-=it->second;
        }
    }
    cout<<sum;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…

剑指offer——旋转数组的最小数字

目录 1. 题目描述2. 分析思路2.1 示例分析 3. 更完美的做法 1. 题目描述 把一个数组最开始的若干个元素搬到数组的末尾&#xff0c;我们称之为数组的旋转。输入一个递增排序的数组的一个旋转&#xff0c;输出旋转数组的最小元素。例如数组{3.4,5,1.2}为{1.2,3,4,5}的一个旋转&a…

使用Arduino 配合TFT_eSPI库 实现合宙ESP32开发板 驱动ST7735S显示屏 显示自定义图片

1.根据针脚定义接线 查询官方文档针脚定义 ESP32C3-CORE开发板 - LuatOS 文档 将ESP32与7735屏幕一一相连。 接线如下&#xff08;稍后在软件中定义针脚&#xff0c;也可以使用其他GPIO&#xff0c;但是这种接线挨在一起是最方便的&#xff09; 2.Arduino下载TFT_eSPI库 打开侧…

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-Viterbi译码原理

目录 一、引言 二、Viterbi译码的基本原理 2.1 卷积码与网格图 2.2 Viterbi算法的核心思想 2.3 路径度量与状态转移 三、Viterbi译码算法工作原理详解 3.1 算法流程 3.2 关键步骤 3.3 译码算法举例 3.4 性能特点 四、Viterbi译码的应用场景 4.1 移动通信系统 4.2 卫…

Go结构体深度探索:从基础到应用

在Go语言中&#xff0c;结构体是核心的数据组织工具&#xff0c;提供了灵活的手段来处理复杂数据。本文深入探讨了结构体的定义、类型、字面量表示和使用方法&#xff0c;旨在为读者呈现Go结构体的全面视角。通过结构体&#xff0c;开发者可以实现更加模块化、高效的代码设计。…

AI论文速读 |【综述】城市基础模型回顾与展望——迈向城市通用智能

最近申请了一个公众号&#xff0c;名字为“时空探索之旅”。之后会同步将知乎有关时空和时序的论文总结和论文解读发布在公众号&#xff0c;更方便大家查看与阅读。欢迎大家关注&#xff0c;也欢迎多多提建议。 &#x1f31f;【紧跟前沿】“时空探索之旅”与你一起探索时空奥秘…

剪辑视频衔接怎么操作 剪辑视频衔接过渡自然方法 剪辑视频教程新手入门 抖音剪辑短视频 会声会影视频制作教程

视频剪辑在现代社交媒体和数字媒体时代中变得越来越重要。它广泛应用于各种领域&#xff0c;包括电影制作、广告宣传、教育培训、社交媒体内容创作等。 一、剪辑视频衔接怎么操作 会声会影是一款功能强大、易于使用的视频编辑软件。接下来我们拿会声会影为例讲解剪辑视频如何…

意外删除照片数据?恢复照片数据的 10 大照片恢复工具方法

在某些时候&#xff0c;许多计算机用户需要使用照片恢复软件。很容易意外删除错误的文件或文件夹&#xff0c;您可能需要使用图片恢复技术来找回一些不可替代的回忆&#xff0c;如婚礼照片&#xff08;甚至视频&#xff09;。 在评估软件时&#xff0c;我们优先考虑了哪些参数&…

鸿蒙系统进一步学习(一):学习资料总结,少走弯路

随着鸿蒙Next的计划越来越近&#xff0c;笔者之前的鸿蒙系统扫盲系列中&#xff0c;有很多朋友给我留言&#xff0c;不同的角度的问了一些问题&#xff0c;我明显感觉到一点&#xff0c;那就是许多人参与鸿蒙开发&#xff0c;但是又不知道从哪里下手&#xff0c;因为资料太多&a…

【Web】Redis未授权访问漏洞学习笔记

目录 简介 靶机配置 Redis持久化 Redis动态修改配置 webshell 反弹shell Redis写入反弹shell任务 加固方案 简介 Redis&#xff08;Remote Dictionary Server 远程字典服务器&#xff09;是一个开源的内存数据库&#xff0c;也被称为数据结构服务器&#xff0c;它支持…

《Linux 简易速速上手小册》第5章: 用户与群组管理(2024 最新版)

文章目录 5.1 管理用户账户5.1.1 重点基础知识5.1.2 重点案例&#xff1a;创建一个新的开发者账户5.1.3 拓展案例 1&#xff1a;禁用用户登录5.1.4 拓展案例 2&#xff1a;设置账户到期 5.2 群组概念与管理5.2.1 重点基础知识5.2.2 重点案例&#xff1a;为项目团队设置群组5.2.…

MyBatis篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是 Mybatis?二、Mybaits 的优点三、MyBatis 框架的缺点前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、什么…

TO B企业如何通过四个步骤构建高效的 PLG销售体系

在当今以客户为中心的市场环境中&#xff0c;产品引导增长&#xff08;Product-Led Growth&#xff0c;PLG&#xff09;模式对于TO B企业而言&#xff0c;不仅是一种趋势&#xff0c;更是实现可持续增长的关键策略。构建有效的 PLG销售体系 需要整合多个关键部分&#xff1a;客…

LayoutInflater源码解析及常见相关报错分析

在日常Android开发中&#xff0c;最经常使用的RecyclerView控件是大家都绕不开的&#xff0c;而编写其Adapter时更离不开LayoutInflater的调用。当然&#xff0c;如果你做这一行有些时日了&#xff0c;相信你对其使用一定是炉火纯青了。即使如此&#xff0c;我觉得LayoutInflat…

linux应用 进程间通信之信号量(POSIX)

1、前言 1.1 定义 POSIX信号量是一种用于同步进程之间对共享资源访问的机制。它允许进程在访问共享资源之前进行互斥和同步操作&#xff0c;以确保数据的一致性和正确性。POSIX信号量通常由一个整数值表示&#xff0c;可以进行原子增减操作&#xff0c;以及等待和通知操作。 …

Verilog刷题笔记29

题目&#xff1a; Create a 100-bit binary ripple-carry adder by instantiating 100 full adders. The adder adds two 100-bit numbers and a carry-in to produce a 100-bit sum and carry out. To encourage you to actually instantiate full adders, also output the ca…

《Linux 简易速速上手小册》第2章: 命令行的艺术(2024 最新版)

文章目录 2.1 基本 Linux 命令2.1.1 重点基础知识2.1.2 重点案例&#xff1a;整理下载文件夹2.1.3 拓展案例 1&#xff1a;批量重命名文件2.1.4 拓展案例 2&#xff1a;查找并删除特定文件 2.2 文件和目录管理2.2.1 重点基础知识2.2.2 重点案例&#xff1a;部署一个简单的网站2…

从零开始学howtoheap:理解fastbins的​unsorted bin攻击

how2heap是由shellphish团队制作的堆利用教程&#xff0c;介绍了多种堆利用技术&#xff0c;后续系列实验我们就通过这个教程来学习。环境可参见从零开始配置pwn环境&#xff1a;从零开始配置pwn环境&#xff1a;从零开始配置pwn环境&#xff1a;优化pwn虚拟机配置支持libc等指…

政安晨:在Jupyter中【示例演绎】Matplotlib的官方指南(二){Image tutorial}·{Python语言}

咱们接着上一篇&#xff0c;这次咱们讲使用Matplotlib绘制图像的简短尝试。 我的这个系列的上一篇文章在这里&#xff1a; 政安晨&#xff1a;在Jupyter中【示例演绎】Matplotlib的官方指南&#xff08;一&#xff09;{Pyplot tutorial}https://blog.csdn.net/snowdenkeke/ar…

【Java八股面试系列】JVM-类和对象加载过程

目录 类和对象的加载过程 类的生命周期 类的加载过程 加载 验证 准备 解析 初始化 类卸载 对象的加载过程 类和对象的加载过程 什么是类加载和对象加载? 类加载&#xff08;Class Loading&#xff09;&#xff1a;这是指JVM在运行时将类的字节码文件加载到内存中的…
最新文章