首页 > 其他分享 >51nod_1355

51nod_1355

时间:2023-05-03 23:33:15浏览次数:48  
标签:le gcd 51nod sum 1355 split lcm operatorname

题目链接

题意

给出 \(n\) 个正整数 \(a_1,a_2\cdots,a_n\),求 \(\operatorname{lcm}(F_{a_1}, F_{a_2},\cdots, F_{a_n})\)。

其中 \(\{F_i\}\) 为斐波那契数列。
\(2\le n\le 50000, 1\le a_i\le 1000000\)
3s

解答

斐波那契数列的最小公倍数很难直接求,但是其最大公约数却有优美的结论 \(\gcd(F_n, F_m) = F_{\gcd(n, m)}\),于是考虑将最小公倍数转化成最大公约数。

此处有 \(\mathrm{Min-Max}\) 反演的经典推论:

\[\operatorname{lcm}(S) = \prod_{T\subseteq S\land T\not=\varnothing} \left(\gcd(T)\right)^{(-1)^{|T|-1}} \]

证明很简单,分别考虑每个质因子,\(\operatorname{lcm}\) 就是求其 \(\max\),\(\gcd\) 就是求其 \(\min\),即证。

接下来开始推柿子:

\[\begin{split} \operatorname{lcm}(F_s(s\in S)) &=\prod_{T\subseteq S\land T\not ={\varnothing}}\gcd(F_t(t\in T))^{(-1)^{|T|-1}} \\ &=\prod_{T\subseteq S\land T\not ={\varnothing}}F_{\gcd(T)}^{(-1)^{|T|-1}} \end{split} \]

第一步转化完毕!

接下来肯定不能直接枚举子集算,于是进行下一步的推倒:

我们用 \(c_i\) 表示 \(i\) 的倍数出现的次数。

对每个 \(x\) 分别考虑 \(F_x\) 的次数:

\[\begin{split} \sum_{x | T} [\gcd(T) = x](-1)^{|T|-1} &=\sum_{x | T} [\gcd\left(\frac T x\right) = 1](-1)^{|T|-1} \\ &= \sum_{x | T} \sum_{d|\frac Tx } \mu(d)(-1)^{|T|-1} \\ &= \sum_{d=1}^\infty \mu(d)\sum_{i = 1}^{c_{d\cdot x}}\binom{c_{d\cdot x}}{i}(-1)^{-1} \\ &= \sum_{d=1}^\infty \mu(d) [c_{d\cdot x} > 0] \end{split} \]

其中第三行中的 \(i\) 为枚举 \(|T|\)。

于是对于每个 \(x\) 枚举 \(d\) 计算,总复杂度是调和级数级别的,也就是 \(\mathcal{O}(n\log n)\) 的。

于是总复杂度为 \(\mathcal{O}(n\sqrt n)\),瓶颈在于枚举因子。

标签:le,gcd,51nod,sum,1355,split,lcm,operatorname
From: https://www.cnblogs.com/0922-Blog/p/51nod_1355.html

相关文章

  • 51nod 1212 无向图最小生成树(最小生成树)
    1212 无向图最小生成树基准时间限制:1 秒空间限制:131072 KB分值: 0 难度:基础题 收藏 关注Input第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量。(2 <= N <= 1000, 1 <= M <= 50000)第2 - M + 1行:每行......
  • 51nod 1327 棋盘游戏
    1327 棋盘游戏题目来源: TopCoder基准时间限制:1 秒空间限制:131072 KB分值: 640 难度:8级算法题 收藏 关注有一个N行M列的棋盘,即该棋盘被分为N*M格。现在向棋盘中放棋子,每个格子中最多放一个棋子,也可以一个不放。放完棋子后需要满......
  • 51nod 1055 最长等差数列
    1055 最长等差数列基准时间限制:2 秒空间限制:262144 KB分值: 80 难度:5级算法题 收藏 关注例如:13568910121314等差子数列包括(仅包括两项的不列举)1351591336912......
  • 51nod 1799 二分答案
    1799二分答案基准时间限制:1秒空间限制:131072KB分值:40难度:4级算法题收藏关注lyk最近在研究二分答案类的问题。对于一个有n个互不相同的数且从小到大的正整数数列a(其中最大值不超过n),若要找一个在a中出现过的数字m,一个正确的二分程序是这样子的:l=1;r=n;mid=(l+r)/......
  • 51nod 1551 集合交易
    1551 集合交易题目来源: CodeForces基准时间限制:1 秒空间限制:131072 KB分值: 320 难度:7级算法题 收藏 关注市场中有n个集合在卖。我们想买到满足以下要求的一些集合,所买到集合的个数要等于所有买到的集合合并后的元素的个数......
  • 51nod 1370 排列与操作
    1370 排列与操作题目来源: TopCoder基准时间限制:2 秒空间限制:131072 KB分值: 320 难度:7级算法题 收藏 关注给定N长排列P,其中排列指数集{1,2,3...N}组成的一个序列,序列中每个元素恰好出现一次。初始时这个排列是给出的。之......
  • 51nod 1486 大大走格子
    1486 大大走格子题目来源: CodeForces基准时间限制:1 秒空间限制:131072 KB分值: 160 难度:6级算法题 收藏 关注有一个h行w列的棋盘,里面有一些格子是不能走的,现在要求从左上角走到右下角的方案数。Input单组测试数据......
  • 51nod 1149 Pi的递推式
    1149 Pi的递推式基准时间限制:1 秒空间限制:131072 KB分值: 640 难度:8级算法题 收藏 关注F(x)=1(0<=x<4)F(x)=F(x-1)+F(x-pi)(4<=x)Pi=3.1415926535.....现在给出一个N,求F(N)。由于结果巨......
  • 51Nod1019 逆序数(归并排序详解)
    逆序对给定一个1-N的排列A1,A2,...AN,如果Ai和Aj满足i<j且Ai>Aj,我们就称(Ai,Aj)是一个逆序对。 求A1,A2...AN中所有逆序对的数目。input 第一行包含一个整数N......
  • [51Nod 1222] - 最小公倍数计数 (..怎么说 枚举题?)
    题面题目分析令则此处表示小于等于中,满足两个数互质且乘积为的无序数对的个数,显然其中表示d的质因子个数相当于把d的质因数分成两部分,所以就每个质因数选或不选,又因为......