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

能被整除的数(容斥原理)

思路:

(1)需求:求对于1~n中至少能被p1~pm至少1个整除的数的个数,由于都是质数,彼此互质,不需要进行质因子分解,根据容斥原理,

                        res = n/p1 + n/p2 +... + n/pm - n /(p1p2) - n/(p1p3) - ...;

显然只需要讨论p1~pm所有组合形式t,如果小于等于n:

  1. 如果是奇数个质数组成,则加等于n/t,否则减等于n/t;

最终结果即为1~n之间的所有至少能被p1~pm之间1个数整除的数的个数。

(2)注意用二进制讨论组合方式时,不能全零,全零即为1,不满足至少被其中一个整除。

代码:

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

http://www.lryc.cn/news/142233.html

相关文章:

  • Modbus转Profinet网关与流量变送器兼容转ModbusTCP协议博图配置
  • HLS实现CORDIC算法计算正余弦并上板验证
  • 高阶数据结构并查集
  • WSL2连接不了外网怎么办?
  • 【C/C++】探索内存对齐的奥秘与优势
  • leetcode分类刷题:滑动窗口(二、重复元素类型)
  • MySQL—buffer pool
  • 《C和指针》笔记8: 枚举类型
  • Python爬虫框架之Selenium库入门:用Python实现网页自动化测试详解
  • docker swarm 部署服务网络问题
  • 1.00001git源码clone后进行编译(带调试)
  • 使用StorageClass动态创建pv
  • 数据结构(Java实现)-ArrayList与顺序表
  • 性能优化维度
  • PMP P-06 Resource Management
  • 【C++】map的奇葩用法:和函数结合
  • 关于JVM的参数类型
  • HTTP协议中的Content-Type及其常见类型
  • android Junit4编写自测用例
  • arcgis:画一幅自己城市的shp地图
  • 采购油封时要考虑的因素
  • 【无标题】科目一笔记
  • java八股文面试[数据结构]——HashMap和HashTable区别
  • 乐趣无限:10款基于Pygame的经典游戏合集
  • php检测数组是否存在某个键,和是否存在某个变量
  • c++中的const与constexpt的区别
  • android系统启动流程之SystemServer运行过程
  • Leetcode 1812。判断国际象棋棋盘中一个格子的颜色
  • 9个python自动化脚本,PPT批量生成缩略图、添加图片、重命名
  • 计算机竞赛 基于大数据的社交平台数据爬虫舆情分析可视化系统