算法板子:容斥原理——求出 1∼n 中能被质数 p1,p2,…,pm 中的至少一个数整除的整数有多少个

embedded/2024/11/15 5:39:40/

1. 题目要点

1. 设:求1~10中能被质数2和3中至少一个数整除的数有多少个。1~10中能被质数2整除的数的集合记为S1={2,4,6,8,10},能被质数3整除的数的集合记为S2={3,6,9},能同时被质数2和3整数的数的集合为S1∩S2={6}

2. 这道题的目的是求S1∪S2∪S3这个集合的元素个数,也就是求交集的个数的交错和

3. 集合使用二进制标识:S1集合用二进制位001标识; S2集合用二进制位010标识; S1∩S2交集集合用011来标识。
4. 求每个集合的元素个数:S1集合的元素个数为n/p1,也就是10/2=5; S2集合的元素个数为n/p2,也就是10/3=3; S3集合的元素个数为n/(p1*p2),也就是10/(2*3)=1

2. 代码

#include <iostream>
using namespace std;const int N = 20;// p是质数数组,存储输入样例中给出的所有质数
int p[N];
int n, m;int calc()
{int res = 0;// 枚举所有的集合; m是2,有两个质数,1左移两位是二进制100代表十进制4,也就是说外层循环枚举了二进制001、010、011,也就是枚举了三个集合for (int i = 1; i < 1 << m; i ++ ){int t = 1, sign = -1;// 得到求当前集合个数时的分母tfor (int j = 0; j < m; j ++ ){// 得到当前集合的二进制表示if (i & 1 << j){if (1LL * t * p[j] > n) {t = 0;break;}t *= p[j], sign = -sign;}}// 当前集合的个数为n/tif (t) res += n / t * sign;}return res;
}int main()
{cin >> n >> m;// 初始化质数数组pfor (int i = 0; i < m; i ++ ) cin >> p[i];cout << calc() << endl;return 0;
}


http://www.ppmy.cn/embedded/94859.html

相关文章

Python 报错:ModuleNotFoundError: No module named ‘Crypto‘

Crypto报错解决方案 Python 报错&#xff1a;ModuleNotFoundError: No module named Crypto前言问题解决方案 Python 报错&#xff1a;ModuleNotFoundError: No module named ‘Crypto’ 前言 Crypto是一个加密模块&#xff0c;它包含了多种加密算法&#xff0c;如 AES、DES、…

AI大模型赋能游戏:更智能、更个性化的NPC

参考论文&#xff1a;https://arxiv.org/abs/2403.10249 在传统游戏中&#xff0c;NPC&#xff08;非玩家角色&#xff09;的行为往往是预先设定好的&#xff0c;缺乏灵活性和变化性。然而&#xff0c;基于大模型的NPC可以利用其强大的推理和学习能力&#xff0c;实时生成对话…

在HTML中固定表格表头的简单方法

在HTML中&#xff0c;表格元素自身无法提供滚动以及固定表头的配置。借助第三方工具&#xff08;如jQuery的表头固定插件&#xff09;或者结合JavaScrip&#xff0c;是可以实现表格的表头固定的&#xff0c;除此之外&#xff0c;本文还想讨论一种更简单的方式来实现。 从思路上…

macOS 关闭系统更新以及相关提示

在 macOS 上&#xff0c;关闭系统更新以及相关提示可以通过以下步骤实现&#xff1a; 1. 通过系统偏好设置关闭自动更新 打开 系统偏好设置。点击 软件更新。取消勾选 “自动检查更新”&#xff0c;以及 “下载新的可用更新” 等选项。这样可以关闭自动检查更新和自动下载更新…

odoo17 翻译一个小bug

odoo17 翻译一个小bug 用户界面的没译过来 标红处&#xff0c;但在zh_CN.po中明显已经翻译过来了&#xff0c;采取暴力点的&#xff0c;直接把base下的base.pot删除&#xff0c;再更新一下&#xff0c;可以正常显示了

【数据结构】判断单链表中结点是否关于中心对称算法

设计判断单链表中结点是否关于中心对称算法 思路&#xff1a; 初始化栈&#xff1a; sqstack stack; stack.top -1; 初始化一个空栈&#xff0c;栈顶初始值为 -1。 第一次遍历链表&#xff1a; 使用指针 p 遍历链表&#xff0c;将每个节点的值 p->data 压入栈中。 每次压栈…

24/8/13算法笔记 复习_梯度下降

import matplotlib.pyplot as plt import numpy as np#构建方程 f lambda x:(x-3.5)**2-4.5*x10 #构建导数 g lambda x:2*(x-3.5)-4.5x np.linspace(0,11.5,100)#这段代码使用了NumPy库来生成一个线性空间的数组 x 和根据给定的函数 f 计算对应的 y 值。 y f(x)#可视化 plt…

HttpClient在ASP.NET Core中的最佳实践:实现高效的HTTP请求

引言 在现代Web开发中&#xff0c;HTTP请求的高效性和可靠性对于应用的整体性能至关重要。ASP.NET Core提供了HttpClient类&#xff0c;它是一个强大且灵活的工具&#xff0c;可以用来发送HTTP请求并处理响应。然而&#xff0c;如何在ASP.NET Core中实现高效的HTTP请求&#x…