题目链接

题目

题目描述

若一个集合A内所有的元素都不是正整数N的因数,则称N与集合A无关。

给出一个含有k个元素的集合A={a1,a2,a3,...,ak},求区间[L,R]内与A无关的正整数的个数。

保证A内的元素都是素数

输入描述

输入数据共两行:

第一行三个正整数L,R,k,意义如“题目描述”。

第二行k个正整数,描述集合A,保证k个正整数两两不相同。

输出描述

输出数据共一行:

第一行一个正整数表示区间[L,R]内与集合A无关的正整数的个数

示例1

输入

1 10 4
2 3 5 7

输出

1

示例2

输入

2 10 4
2 3 5 7

输出

0

说明

对于30%的数据:1<=L<=R<=10^6

对于100%的数据:1<=L<=R<=10^18,1<=k<=20,2<=ai<=100

题解

知识点:容斥原理,数论。

经典容斥题,我们将 \([l,r]\) 拆成 \([1,l-1],[1,r]\) ,分别计算两边然后减一下就行。

众所周知, \([1,n]\) 中 \(d\) 的倍数个数有 \(\left\lfloor \dfrac{n}{d} \right\rfloor\) 。接下来考虑容斥,比如去掉 \(2,3,5\) 的倍数,那么计算过程为:

\[\begin{aligned}
&+ \left\lfloor \dfrac{n}{1} \right\rfloor\\
&- \left( \left\lfloor \dfrac{n}{2} \right\rfloor + \left\lfloor \dfrac{n}{3} \right\rfloor + \left\lfloor \dfrac{n}{5} \right\rfloor \right) \\
&+ \left( \left\lfloor \dfrac{n}{2\cdot3} \right\rfloor + \left\lfloor \dfrac{n}{2\cdot 5} \right\rfloor + \left\lfloor \dfrac{n}{3 \cdot 5} \right\rfloor \right) \\
&- \left\lfloor \dfrac{n}{2 \cdot 3 \cdot 5} \right\rfloor\\
\end{aligned}
\]

时间复杂度 \(O(2^k)\)

空间复杂度 \(O(k)\)

代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long; int a[27];
int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
ll l, r;
int k;
cin >> l >> r >> k;
for (int i = 1;i <= k;i++) cin >> a[i]; ll ans = 0;
for (int mask = 0;mask < (1 << k);mask++) {
ll mul = 1;
bool f = 0;
for (int i = 0;i < k;i++)
if (mask >> i & 1) mul = min((__int128_t)mul * a[i + 1], (__int128_t)1e18 + 1), f ^= 1;
if (mul > 1e18) continue;
ans += (f ? -1 : 1) * (r / mul - (l - 1) / mul);
} cout << ans << '\n';
return 0;
}

NC16513 无关(relationship)的更多相关文章

  1. 牛客小白月赛5 A 无关(relationship) 【容斥原理】【数据范围处理】

    题目链接:https://www.nowcoder.com/acm/contest/135/A 题目描述 若一个集合A内所有的元素都不是正整数N的因数,则称N与集合A无关.   给出一个含有k个元素的 ...

  2. 牛客小白赛5 无关(relationship) 容斥原理(计算因子数的模板)

    链接:https://www.nowcoder.com/acm/contest/135/A来源:牛客网 若一个集合A内所有的元素都不是正整数N的因数,则称N与集合A无关.   给出一个含有k个元素的集 ...

  3. python---ORM之SQLAlchemy(3)外键与relationship的关系

    relationship是为了简化联合查询join等,创建的两个表之间的虚拟关系,这种关系与标的结构时无关的.他与外键十分相似,确实,他必须在外键的基础上才允许使用 不然会报错: sqlalchemy ...

  4. 2000条你应知的WPF小姿势 基础篇<78-81 Dialog/Location/WPF设备无关性>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,00 ...

  5. CSharpGL(22)实现顺序无关的半透明渲染(Order-Independent-Transparency)

    +BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(22)实现顺序无关的半透明渲染(Order-Independent-Transparency) 在 GL.Enable(GL_BLEND ...

  6. [bigdata] 使用Redis队列来实现与机器无关的Job提交与执行 (python实现)

    用例场景: 定时从远程多台机器上下载文件存入HDFS中.一开始采用shell 一对一的方式实现,但对于由于网络或者其他原因造成下载失败的任务无法进行重试,且如果某台agent机器down机,将导致它对 ...

  7. EX:The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

    EX:The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secu ...

  8. 如何解决CRUD操作中与业务无关的字段赋值

    提高效率一直是个永恒的话题,编程中有一项也是可以提到效率的,那就是专注做一件事情,让其它没有强紧密联系的与之分开.这里分享下我们做CRUD时遇到的常见数据处理场景: 数据库表字段全部设计为非空,即使这 ...

  9. 第15章 设备无关位图_15.3 DIB和DDB的结合

    第15章 设备相关位图_15.3 DIB和DDB的结合 15.3.1 从DIB创建DDB (1)hBitmap =CreateDIBitmap(…)——注意这名称会误导,实际上创建的是DDB 参数 说 ...

  10. 第15章 设备无关位图_15.1 DIB文件格式

    15.1 DIB文件格式(一种文件格式,扩展名为BMP) 15.1.1 OS/2风格的DIB 文件格式 字段 说明 文件头 (BITMAPFILEHEADER) 1.共14个字节 2.缩写建议用bmf ...

随机推荐

  1. 在Linux上安装和使用免费版本的PyMol

    技术背景 PyMol是一个类似于VMD的分子可视化工具,也是在PyQt的基础上开发的.但是由于其商业化运营,软件分为了教育版.开源版和商业版三个版本.其中教育版会有水印,商业版要收费,但是官方不提供开 ...

  2. CSS : 使用 z-index 的前提

    使用 z-index 前  , 需要将元素 定位设置为  position : relative .

  3. HttpClient获取不到最新的系统代理

    默认情况下,HttpClient是默认采用系统代理,但是,如果你在程序运行过程中,手动修改系统代理,对于HttpClient是无效的,它依然会用老的代理去访问. 解决方法 使用下面的代码,你可以自己实 ...

  4. makefile文件详解

    1. make 编译:将源代码文件翻译成处理器可执行的二进制文件的过程,这个过程的时间区间称为编译时 构建:指定多个编译过程的先后顺序 make命令是常用的构建工具,诞生于1977年,主要用于C/C+ ...

  5. UofTCTF 2024 比赛记录

    这次的题目挺有意思,难度适中,*开头的代表未做出,简单记录一下解题笔记. Introduction General Information 题目 The flag format for all cha ...

  6. [转帖]Kubernetes 1.23:IPv4/IPv6 双协议栈网络达到 GA

    https://kubernetes.io/zh-cn/blog/2021/12/08/dual-stack-networking-ga/#:~:text=Kubernetes%201.23%EF%B ...

  7. MySQL数据库页存储结构学习与了解

    MySQL数据库页存储结构学习与了解 背景 MySQL总是出现奇奇怪怪的问题. 想着自己能够学习与提高一下. 最近看了很多文档.关于MySQL数据库相关的. 想着总结和提炼一下, 希望能够给未来的工作 ...

  8. JVM内存学习 2.0

    先说一下结果 1. Linux的内存分配是惰性分配的. APP申明了 kernel并不会立即进行初始化和使用. 2. JVM的内存主要分为, 堆区, 非堆区, 以及jvm使用的其他内存. 比如直接内存 ...

  9. js数组修改后会互相影响

    // 假设httpServe 是服务器返回来的数据 // 我们这里有一个需求, // 某一个区域需要对这一份数据进行展示 // 另一个区域需要只需要展示前1条数据 let httpServe = [ ...

  10. js中计算一个时间点加上一个时间段后的时间

    function aa(a,b){ console.log(111,a,b) var nd = new Date(Date.parse(a.replace(/-/g, "/"))) ...