「刷题」JZPKIL

  这道反演题,真牛逼。

  以下用$B$代表伯努利数,$l*g=f$代表狄利克雷卷积,先推式子。

  对于给出的$n,x,y$求一百组数据的$ans$

$\begin{array}{rcl} ans & = & \sum\limits_{i=1}^ngcd(i,n)^xlcm(i,n)^y\end{array}$

$\begin{array}{rcl} & = & \sum\limits_{i=1}^ngcd(i,n)^x\frac{(in)^y}{gcd(i,n)^y}\end{array}$

$\begin{array}{rcl} & = & \sum\limits_{i=1}^ngcd(i,n)^{x-y}(in)^y\end{array}$

$\begin{array}{rcl} & = & n^y\sum\limits_{i=1}^ni^ygcd(i,n)^{x-y}\end{array}$

$\begin{array}{rcl} & = & n^y\sum\limits_{d|n}d^{x-y} \sum \limits_{i=1}^{\lfloor \frac{n}{d} \rfloor} (id)^y[gcd(i,\lfloor\frac{n}{d} \rfloor)=1]\end{array}$

$\begin{array}{rcl} & = & n^y\sum\limits_{d|n}d^x\sum\limits_{i=1}^{\lfloor \frac{n}{d} \rfloor}i^y\sum\limits_{t|gcd(i,\lfloor \frac{n}{d} \rfloor)}\mu(t)\end{array}$

$\begin{array}{rcl} & = & n^y\sum\limits_{d|n}d^x\sum\limits_{t|\lfloor\frac{n}{d}\rfloor}\mu(t)t^y\sum\limits_{i=1}^{\lfloor\frac{n}{td}\rfloor}i^y\end{array}$

$\begin{array}{rcl}\sum\limits_{i=0}^{\lfloor\frac{n}{td}\rfloor}i^y & = & \frac{1}{y+1}\sum\limits_{i=0}^yC_{y+1}^iB_i(\lfloor\frac{n}{td}\rfloor)^{y-i+1}\end{array}$

$\begin{array}{rcl}R_i & = & \frac{C_{y+1}^iB_i}{y+1}\end{array}$

$\begin{array}{rcl}ans & = & n^y\sum\limits_{d|n}d^x\sum\limits_{t|\lfloor\frac{n}{d}\rfloor}\mu(t)t^y\sum\limits_{i=0}^yR_i(\lfloor\frac{n}{td}\rfloor)^{y-i+1}\end{array}$

$\begin{array}{rcl} & = & \sum\limits_{i=1}^yR_in^y\sum\limits_{d|n}d^x\sum\limits_{t|\lfloor\frac{n}{d}\rfloor}\mu(t)t^y(\lfloor\frac{n}{td}\rfloor)^{y-i+1}\end{array}$

$\begin{array}{rcl}f_{i,x,y}(n) & = & n^y\sum\limits_{d|n}d^x\sum\limits_{t|\lfloor\frac{n}{d}\rfloor}\mu(t)t^y(\lfloor\frac{n}{td}\rfloor)^{y-i+1}\end{array}$

分析$f_{i,x,y}(n)$。

$\begin{array}{rcl} l(x) & = & \mu(x)x^y \end{array}$

$\begin{array}{rcl} q_r(x)=x^r\end{array}$

$l,q$ 均为积性函数。

$\begin{array}{rcl} g(n) & = & \sum\limits_{d|n}\mu(d)d^yq(\lfloor\frac{n}{d}\rfloor)\end{array}$

$\begin{array}{rcl} g(n) & = & l(n)*q(n)\end{array}$

也为积性函数。

$\begin{array}{rcl} f(n) & = & \sum\limits_{d|n}q(d)g(\lfloor\frac{n}{d}\rfloor)\\ & = & q(n)*g(n)\end{array}$

所以$f_{i,x,y}(n)$是积性函数。

$\begin{array}{rcl}ans & = & \sum\limits_{i=0}^yR_if_{i,x,y}(n)\end{array}$

$n$为$1e18$考虑用$O(n{1/4})$的$Pollard_Rho$算法对$n$进行质因分解。

$n=\_p^c$

$\begin{array}{rcl}f_{i,x,y}(p^c) & = & p^{cy}\sum\limits_{d|p^c}\sum\limits_{t|\lfloor\frac{p^c}{d}\rfloor}\mu(t)t^y(\lfloor\frac{p^c}{td}\rfloor)^{y-i+1}\end{array}$

$\begin{array}{rcl} & = & p^{cy}\sum\limits_{j=0}^cp^{jx}\sum\limits_{k=0}^{c-j}\mu(p^k)p^{ky}(p^{c-j-k})^{y-i+1}\end{array}$

当k=1或者0的时候,莫比乌斯函数不为0。

$\begin{array}{rcl} & = & p^{cy}\sum\limits_{j=0}^c p^{jx}[(p^{c-j})^{y-i+1}-p^y(p^{c-j-1})^{y-i+1}]\end{array}$

问题得到解决。

知识点:

莫比乌斯反演

狄利克雷卷积

积性函数

自然数幂和

伯努利数

$Miller\_Rabin$素数测试

$Pollard\_Rho$质因数分解

费马小定理

二次初探原理

生日悖论

有兴趣的可以尝试一下,是道好题。

原文地址:https://www.cnblogs.com/Lrefrain/p/11370373.html

时间: 2024-08-07 18:02:37

「刷题」JZPKIL的相关文章

「C语言」「刷题」XUPT Online Judge经典题型

在学校OJ网( http://www.xyjudge.com/)上刷了一些题,有的题型值得整理在博客上. 3.6日才刚刚开始刷,慢慢添加那些比较经典的,并尽量用多种方法求解后思考哪一种最适合. 1 #include <stdio.h> 2 #include <math.h> 3 #define A 2 4 5 int f(int i,int k) 6 { 7 int j; 8 j=k*A*pow(10,i); 9 return j; 10 } 11 12 int main() 13

「刷题」Triple

正解是指数型母函数+FFT. 才学了多项式,做了一道比较好的题了. 首先有三个斧子被偷了. 我们考虑构造一种指数型母函数. 就是说一种多项式吧,我的理解. 系数是方案,下标,也就是所谓的元指数代表的是价值. 这样如果两个母函数相乘的话,指数相加,系数相乘. 正好就是两个单元合并之后的方案和价值. $A(x),B(x),C(x)$分别代表一把相同的斧子用价值为x,2把为x,3把为x的方案数. 容斥一下. 三把的答案就是$A(x)*A(x)*A(x)-C_3^1A(x)B(x)+2C(x)$ 解释一

「刷题」 网络

看了一下网上基本都是线段树二分的题解,然而我想到一种整体二分的思路,正好练习一下. 是道好题. 首先用树上ST表处理,用于求LCA. 考虑整体二分离线求解. 一种方法是用树链剖分的,复杂度是$O(log^2n)$的,在套上个整体二分,复杂度达到了$O(nlog^3n)$所以说不可以直接树剖暴力. 可以用树上差分的方式. 考虑假设对于当前询问二分出的某一个答案,如何$check$? 只需要判断这个点是否阻断了所有的权值大于这个答案的路径,如果是的话,那么放低上界,否则升高下界. 用整体二分来做这个

「刷题」你的名字

题真好. 也帮我回忆起了快两个月没动的\(SAM\). 我只能想到\(68\)分的数据. 题目要求给出一个串\(S\). 然后每次询问给出一个串\(T\)和两个变量\(l,r\) 要求出有多少个本质不同串是\(T\)的子串而不是\(S[l,r]\)的子串. 前面\(68\)分是\(l=1,r=n\)的. 直接做. 首先我们对\(S\)建出后缀自动机. 询问的时候,对\(T\)再次建出后缀自动机. 每次建出一个前缀节点的时候统计一下本质不同子串,同时记录此时前缀节点父亲的\(len\)值,如果是第

「刷题」Color 群论

这道题乍一看挺水的,直接$ Ploya $就可以了,可是再看看数据范围: $ n\lep 1e9 $ 那就是有1e9种置换,这不歇比了. 于是考虑式子的优化. 首先证明,转i次的置换的每个循环结大小是 $ gcd(i,n) $ 证明: 首先设第x个元素的位置是p,置换种类是i,循环k次后回到原点,k也就是循环结个数. $ ik+p \equiv p (mod n) $ $ ik \equiv 0 (mod n) $ $ n|ik $ $ i|ik $ 我们要让k最小,那么: $ ik=lcm(i

「刷题」GERALD07加强版

是LCT了. 首先我们不知道联通块怎么数. 然后颓标签知道了是LCT. 那么考虑一下怎么LCT搞. 有一个很普遍的思路大家也应该都知道,就是如何求一个区间中某种颜色的个数. 这个可以很简单的用主席树来实现对吧,只需要记录下来这种颜色上次出现的位置就可以了,然后在$[l,r]$中查询值在$[0,l-1]$中的数的个数. 然后联通块和这个有什么关系呢? 颜色的话为什么可以用这种方法代替呢?为了去重,而这道题中什么情况是所谓“重”的呢? 就是两条边链接了两个相同的集合的时候. 那么考虑以下一种算法.

「原创题」红太阳

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

路灯「APIO 2019」

题意 有.复杂,自己上网搜 思路 \((x,y)\) 表示从\(x\)到\(y\)联通的时间长度. 那么查询操作相当于二维平面上的单点查询. 对于每一个\(i\),维护一个最左能到达的\(lm\),和最右能到达的\(rm\). 那么对于每一个更新操作,相当于对左上角为\((lm,i)\),右下角为\((i,rm)\)的矩形做修改. 于是就转换为类似「简单题」的题目了,可以CDQ分治解决,当然也可以直接上树套树. 代码 #include <bits/stdc++.h> using namespa

LibreOJ #6001. 「网络流 24 题」太空飞行计划 最大权闭合图

#6001. 「网络流 24 题」太空飞行计划 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合 E={E1,E2,?,Em} E = \{ E_1, E_2, \cdots, E_m \}E={E?1??,E?2??,?,E?m??},和进行这些实验