题目描述:输入一个大小为\(n\)的集合\(S\),求\(\text{lcm}_{k\in S}f_k\),其中\(f_k\)是第$$个Fibonacci数。

数据范围:\(n\le 5\times 10^4,u\le 10^6\)

数论经典题?

首先你要想到min-max容斥。

\[\text{lcm}(f_S)=\prod_{\varnothing\ne T\subseteq S}\gcd(f_T)^{(-1)^{|T|-1}}
\]

然后你知道\(\gcd(f_a,f_b)=f_\gcd(a,b)\),所以。

\[\text{lcm}(f_S)=\prod_{\varnothing\ne T\subseteq S}f_{\gcd(T)}^{(-1)^{|T|-1}}
\]

不知道为什么你开始反演,设\(f_n=\prod\limits_{d|n}g_d\),则\(g_n=\prod\limits_{d|n}f_{d}^{\mu(\frac{n}{d})}\)。

\[\begin{aligned}
\text{lcm}(f_S)&=\prod_{\varnothing\ne T\subseteq S}(\prod_{d|\gcd(T)}g_d)^{(-1)^{|T|-1}} \\
&=\prod_{d}g_d^{\sum\limits_{\varnothing\ne T\subseteq S,d|T}(-1)^{|T|-1}}
\end{aligned}
\]

我们看看指数是啥。设\(S_d=\{n|n\in S\and d|n\}\)。

\[\sum_{\varnothing\ne T\subseteq S_d}(-1)^{|T|-1}=[|S_d|>0]
\]

所以

\[\text{lcm}(f_S)=\prod_{\exist a\in S,d|a}g_d
\]

直接做,时间复杂度\(O(k\log k)\)

code

```cpp
#include
#define Rint register int
using namespace std;
typedef long long LL;
const int mod = 1e9 + 7, N = 1000003;
int n, a[N], mx, f[N], g[N], ans = 1;
bool vis[N];
inline int add(int a, int b){return (a + b >= mod) ? (a + b - mod) : (a + b);}
inline int kasumi(int a, int b){
int res = 1;
while(b){
if(b & 1) res = (LL) res * a % mod;
a = (LL) a * a % mod; b >>= 1;
}
return res;
}
int main(){
scanf("%d", &n);
for(Rint i = 1;i

LOJ6102「2017 山东二轮集训 Day1」第三题 【min-max容斥,反演】的更多相关文章

  1. loj6102 「2017 山东二轮集训 Day1」第三题

    传送门:https://loj.ac/problem/6102 [题解] 贴一份zyz在知乎的回答吧 https://www.zhihu.com/question/61218881 其实是经典问题 # ...

  2. loj6100 「2017 山东二轮集训 Day1」第一题

    传送门:https://loj.ac/problem/6100 [题解] 我们考虑维护从某个端点开始的最长满足条件的长度,如果知道了这个东西显然我们可以用主席树来对每个节点建棵关于右端点的权值线段树, ...

  3. LOJ #6119. 「2017 山东二轮集训 Day7」国王

    Description 在某个神奇的大陆上,有一个国家,这片大陆的所有城市间的道路网可以看做是一棵树,每个城市要么是工业城市,要么是农业城市,这个国家的人认为一条路径是 exciting 的,当且仅当 ...

  4. loj6119 「2017 山东二轮集训 Day7」国王

    题目描述 在某个神奇的大陆上,有一个国家,这片大陆的所有城市间的道路网可以看做是一棵树,每个城市要么是工业城市,要么是农业城市,这个国家的人认为一条路径是 exciting 的,当且仅当这条路径上的工 ...

  5. LOJ 6060「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set(线性基,贪心)

    LOJ 6060「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set $ solution: $ 这一题的重点在于优先级问题,我们应该先保证总和最大,然后再保证某一个最小.于是我 ...

  6. 【LOJ6077】「2017 山东一轮集训 Day7」逆序对 生成函数+组合数+DP

    [LOJ6077]「2017 山东一轮集训 Day7」逆序对 题目描述 给定 n,k ,请求出长度为 n的逆序对数恰好为 k 的排列的个数.答案对 109+7 取模. 对于一个长度为 n 的排列 p ...

  7. loj #6077. 「2017 山东一轮集训 Day7」逆序对

    #6077. 「2017 山东一轮集训 Day7」逆序对   题目描述 给定 n,k n, kn,k,请求出长度为 n nn 的逆序对数恰好为 k kk 的排列的个数.答案对 109+7 10 ^ 9 ...

  8. Loj #6069. 「2017 山东一轮集训 Day4」塔

    Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...

  9. Loj #6073.「2017 山东一轮集训 Day5」距离

    Loj #6073.「2017 山东一轮集训 Day5」距离 Description 给定一棵 \(n\) 个点的边带权的树,以及一个排列$ p\(,有\)q $个询问,给定点 \(u, v, k\) ...

随机推荐

  1. C# 的ToString 常用方法

    货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025E 科学型 25000.ToString(&q ...

  2. JAVA基础之JSP与EL技术、JSTL技术

    要牢记jsp四大作用域(pageContext域:当前jsp页面范围      request域:一次请求   session域:一次会话   application域:整个web应用)以及九大内置对 ...

  3. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  4. Mac 环境变量的配置

    1.打开终端. 2.输入命令:sudo vi /etc/paths,然后enter,输入电脑开机密码,继续enter(这个地方的密码不会显示,只要你输入完了就按enter). 3.此时vi编辑器打开了 ...

  5. Flask入门很轻松(三)—— 模板

    Jinja2模板引擎 转载请在文章开头附上原文链接地址:https://www.cnblogs.com/Sunzz/p/10959471.html Flask内置的模板语言,它的设计思想来源于 Dja ...

  6. 注入 Istio sidecar

    注入 Istio sidecar 网格中的每个 Pod 都必须伴随一个 Istio 兼容的 Sidecar 一同运行. 下文中将会介绍两种把 Sidecar 注入到 Pod 中的方法:使用 istio ...

  7. W3C--BOM(1)知识梳理

    <一>BOM浏览器对象模型 1. window 1.1 window.innerHeight浏览器窗口的内部高度,window.innerWidth浏览器窗口的内部宽度  (对于Inter ...

  8. 使用Apollo做配置中心

    https://blog.51cto.com/12980017/2158490?source=dra 由于Apollo支持的图形化界面相对于我们更加的友好,所以此次我们使用Apollo来做配置中心 本 ...

  9. Java线程状态、线程start方法源码、多线程、Java线程池、如何停止一个线程

    下面将依次介绍: 1. 线程状态.Java线程状态和线程池状态 2. start方法源码 3. 什么是线程池? 4. 线程池的工作原理和使用线程池的好处 5. ThreadPoolExecutor中的 ...

  10. Product Oriented Recurrence(Codeforces Round #566 (Div. 2)E+矩阵快速幂+欧拉降幂)

    传送门 题目 \[ \begin{aligned} &f_n=c^{2*n-6}f_{n-1}f_{n-2}f_{n-3}&\\ \end{aligned} \] 思路 我们通过迭代发 ...