[原创题] divnum

题意

  给定 n 个数 $a_1, a_2, ..., a_n$ .

  求 $\sum_{1 \le x \le K}[\exists i, ~s.t.~a_i | x]$ .

  $n \le 20$

  $1 \le a_i, K \le {10} ^ {12}$ .

分析

  容斥原理.

  如果最小公倍数 > K , 那么直接剪枝.

时间: 2024-11-03 20:52:34

[原创题] divnum的相关文章

Myhchael原创题系列 Mychael vs Kid 【题解】

题目链接 Mychael vs Kid 题解 先说说这题的由来及前身 前身 首先有一个很经典的题目: 维护区间加,查询区间\(gcd\) 如果强行用线段树维护的话,区间加之后就没法直接确定当前区间的\(gcd\),不可直接维护 这个时候就用到了\(gcd\)的一个性质: \[(a,b) = (a - b,b)\] 三个的\(gcd\)也是符合的: \[(a,b,c) = (a,b,c - b) = (a,b - a,c - b)\] 同样可以推广出\(n\)个的情况 \[gcd\{a_i\} =

[原创题] max 左偏树

Simple  你要维护一个多重集合 $S$ . ? 最初集合为空. ? 一共有 $m$ 次操作, 每次操作形如下面两种中的一种: ? $1~a$ : 在多重集合 $S$ 中插入一个 $a$ . ? $2$ : 查询 $\max_{i \in S}i$ . ? $m \le {10} ^ 5, a \le {10} ^ 9$ , 强制在线. #include <cstdio> #include <cstring> #include <cstdlib> #include

[原创题] count 分段Hash

题意 实现 #include <cstdio> #include <cstring> #include <cstdlib> #include <cctype> #include <map> using namespace std; #define F(i, a, b) for (register int i = (a); i <= (b); i++) const int N = 300000; int n, m, a[N]; int M;

[原创题] 逆伐苍穹 two-pointer

题意 实现 有两个指针: 主指针, 附指针. 主指针移动, 则仍然要满足要求. 附指针保持在满足与不满足的分界线. #include <cstdio> #include <cstring> #include <cstdlib> #include <cctype> #include <algorithm> using namespace std; #define F(i, a, b) for (register int i = (a); i <

[原创题] 树上点到路径的距离, 以及树上路径到路径的距离

在学习平面几何的时候, 我们介绍了点, 直线和圆, 随后就研究了它们之间的一些数量关系. 现在的载体变成了树. 对于一棵树, 我们定义了点和路径, 那么不妨可以研究一下点与点的距离, 点到路径的距离, 路径到路径的距离. 点与点的距离 $dist(x, y) = d[x] + d[y] - d[LCA(x, y)]$ . 点到路径的距离 定义 $dist(x, path(a, b)) = \min_{d \in path(a, b)} dist(x, d)$ . $dist(x, path(a,

[原创题] 阶乘取模 分段打表

题意 计算 $n! \mod {10 ^ 9 + 7}$ . $n \le {10 ^ 9}$ . 实现 prework.cpp 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cctype> 5 6 const int D = 1000000; 7 const int M = (int)1e9+7; 8 9 int main(void) { 10 for (

「原创题」红太阳

「题目描述」 我们都知道,红太阳会发出光芒.每天红太阳会等概率随机.不超过 $n$ 次地发出光芒,每次包含着 $a$ 个单位的热量. 我们都知道,只有在红太阳的照耀下,我们才能茁壮成长.每天每个人都希望得到 $c$ 个单位的热量,只有得到了 $c$ 个单位的热量,一个人才会满足,并高呼「红太阳万岁!」.而红太阳会满足尽量多的人. 问每天红太阳能满足的人的期望个数,为了避免浮点误差,将答案乘上 $n+1$ 对 ${10} ^ 9 + 7$ 取模后输出. 「做法1」类欧几里得算法 求 $\begin

20170910模拟赛

啊啊啊lrb巨神出题不按难度排序坑死人啦!!! 忠告:正向做题,否则AK! rk11,总体还是有一定进步,但是我可以300的!!!!!! 不说了,都是泪~ T1:(大丧题) CCT 最近学校又发了n本五三题霸,BBS看到后十分高兴.但是,当他把五三拿到手后才发现,他已经刷过这些书了!他又认真地看了一会儿,发现新发的这些五三是2017版的,而他刷的是2016版的.现在他想找出所有他没有刷过的题来刷.每本五三都有m道题,并且它的特征(即它和去年版本的五三的差距)可以用一个m位二进制数来代表,二进制位

51Nod1782 圣诞树

传送门 我居然忘写题解啦!(记忆废) 总的来说这题就是道大数据结构--看我代码长度就知道了,真的是长得要死-- -- 这题的操作都是路径修改单点查询,因此可以树上差分,问题就变成了维护子树中的所有标记. 注意到题目要求按照出现次数排序,可以想到用以出现次数为关键字的平衡树维护.虽然这个东西没法快速合并,但它是资瓷启发式合并的,那么我们对每个点再开一个map记录每种礼物的出现次数就好了,合并的时候同时维护平衡树和map. 合并操作只会进行$n-1$次(废话),因此复杂度为$O(n\log^2 n)