最近重新系统地学了下这几个知识点,以前没发现他们的联系,这次总结一下. 莫比乌斯反演入门:https://blog.csdn.net/litble/article/details/72804050 线性筛筛常见积性函数及其代码:https://blog.masterliu.net/algorithm/sieve/ 积性函数与线性筛(包括普通线性函数):https://blog.csdn.net/weixin_42562050/article/details/87997582 bzoj2154/b…
Divisor counting 题目大意:定义f(n)表示整数n的约数个数.给出正整数n,求f(1)+f(2)+...+f(n)的值. 注释:1<=n<=1000,000 想法:我们再次有两种做法:文...武......想讲武的......我们其实这次更博只是为了介绍一种知识点——线性筛法筛积性函数.这里,给出线性筛的万能筛法. 1.初值:显然,初值是必要的. 2.我们类比欧拉筛,用k(n)举例.当n是素数时的情况使我们必须的,这相当于初值一样重要. 3.又因为,我们主要筛积性函数,显然函数…
LINK:简单题 以前写过弱化版的 不过那个实现过于垃圾 少预处理了一个东西. 这里写一个实现比较精细了. 最后可推出式子:\(\sum_{T=1}^nsum(\frac{n}{T})\sum_{x|T}(\frac{T}{x})^kx^k\mu(\frac{T}{x})^2\mu(x)\) 其中 \(sum(x)=\sum_{i=1}^{x}\sum_{j=1}^{x}(i+j)^k\) 先看前面的那项 由于是完全积性函数先筛出\(i^k\)复杂度可近乎是O(n)的. 考虑上面的式子怎么求?再…
2693: jzptab Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 444  Solved: 174[Submit][Status][Discuss] Description   Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M Output T行 每行一个整数 表示第i组数据的结果 Sample Input 1 4 5 Sample Output 122 HINT T <= 10000 N, M<=100000…
链接:https://ac.nowcoder.com/acm/contest/392/C来源:牛客网 题目描述 华华刚刚帮月月完成了作业.为了展示自己的学习水平之高超,华华还给月月出了一道类似的题: Ans=⊕Ni=1(iNmod(109+7))Ans=⊕i=1N(iNmod(109+7)) ⊕⊕符号表示异或和,详见样例解释. 虽然月月写了个程序暴力的算出了答案,但是为了确保自己的答案没有错,希望你写个程序帮她验证一下. 输入描述: 输入一个正整数N. 输出描述: 输出答案Ans. 示例1 输入…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4407 推导如这里:https://www.cnblogs.com/clrs97/p/5191506.html 然后发现 \( F(D) \) 是一个积性函数,可以筛质数的同时筛出来: 首先,单个质数 \( p \) 时只有 \( d=1 \) 和 \( d=p \) 两个因数,所以 \( F[p] = p^{k} - 1 \) 然后如果筛到互质的数,直接把 \( F() \) 相乘即可:…
问题描述 洲阁筛解决的问题主要是\(n\)范围较大的积性函数前缀和. ​ 已知一积性函数\(f(i)\),求\(\sum_{i=1}^nf(i)\). \(n\leq10^{12}\). 求解方法 如果\(f(i)\)在质数处的取值比较简单,那么可以运用洲阁筛来求解. ​ 我们需要两个辅助数组. \(g_{i,j}\) 定义如下: \[ \begin{aligned} g_{i,j}&=\sum_{k=2}^i[k与p_1,p_2,...,p_j互质或就是其中某个质数]\; s(k)\\ &…
Description 给下N,M,K.求     Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. Output #include<bits/stdc++.h> #define ll long long #define maxn 5000003 #define N 5000001 using namespace std; const ll mod=1000000007; name…
#include<bits/stdc++.h> using namespace std; #define ll long long #define mod 1000000007 #define maxn 5000005 ll n,m,K; ll Pow(ll a,ll b){ ll res=; while(b){ )res=res*a%mod; b>>=;a=a*a%mod; } return res; } bool vis[maxn]; ll prime[maxn],G[maxn…
题目描述 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m|\mu(gcd(i,j))|lcm(i,j)$,即$gcd(i,j)$不存在平方因子的$lcm(i,j)$之和. 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 4 2 4 3 3 6 5 8 3 样例输出 24 28 233 178 题解 莫比乌斯反演+线性筛 (为了方便,以下公式默认$n\le m$) $\ \ \ \…
题目描述 给下N,M,K.求 输入 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. 输出 如题 样例输入 1 2 3 3 样例输出 20 题解 莫比乌斯反演+线性筛 $\sum\limits_{i=1}^n\sum\limits_{j=1}^m\gcd(i,j)^k\\=\sum\limits_{d=1}^{\min(n,m)}d^k\sum\limits_{i=1}^n\sum\limits…
推导: 设d=gcd(i,j) 利用莫比乌斯函数的性质 令sum(x,y)=(x*(x+1)/2)*(y*(y+1)/2) 令T=d*t 设f(T)= T可以分块.又由于μ是积性函数,积性函数的约束和仍是积性函数,所以f也是积性函数,可以O(n)线性筛求得.总时间复杂度为 具体筛法看代码. 代码: #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define mod…
只会搬运YL巨巨的博客 积性函数 定义 积性函数:对于任意互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 完全积性函数:对于任意整数a和b有性质f(ab)=f(a)f(b)的数论函数 性质 两个积性函数的狄利克雷卷积仍为积性函数. 若积性函数满足 \(f(n^p)=f^p(n)\)则它一定是完全积性函数.因为一个数可以唯一分解,则它一定可以表示成质数相乘的形式:因为他时积性函数所以,\(f(\prod_{i=1}^{n}p_i)=\prod _{i=1}^{n}f(p_i)\),…
积性函数 数论函数指的是定义在正整数集上的实或复函数. 积性函数指的是当 \((a,b)=1\) 时, 满足 \(f(a*b)=f(a)*f(b)\) 的数论函数. 完全积性函数指的是在任何情况下, 满足 \(f(a*b)=f(a)*f(b)\) 的数论函数. 常见的积性函数 copy&modified from 积性函数 - 维基百科,自由的百科全书 φ(n) -欧拉函数 μ(n) -莫比乌斯函数,关于非平方数的质因子数目 gcd(n,k) -最大公因子,当k一定 d(n) -n的正因子数目…
SUM 题意:f(n)是n可以拆成多少组n=a*b,a和b都是不包含平方因子的方案数目,对于a!=b,n=a*b和n=b*a算两种方案,求∑i=1nf(i) 首先我们可以知道,n=1时f(1)=1, 然后我们继续分析,当n为素数p时,只能拆成n=1*p和n=p*1这两种,所以f(p)=2, 而当n=两个质数的乘积时,对于n=左*右,p1跟p2可以任意分配在左和右,它们的方案是类乘的,所以f(p1*p2)=f(p1)*f(p2) 这里可以看出f(n)是个积性函数,那说明我们可以把它通过线性筛筛出来…
HDU - 2879HeHe 题意:He[N]为[0,N−1]范围内有多少个数满足式子x2≡x (mod N),求HeHe[N]=He[1]×……×He[N] 我是通过打表发现的he[x]=2k,k为x是质因子个数,不过这是可以通过积性函数证明的. 关于积性函数的定义: 对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时,f(ab)=f(a)f(b),在数论上就称它为积性函数.若对于某积性函数 f(n) ,就算a, b不互质,也有f(ab)=f(a)f(b),则称它为完全积性…
Code: #include<bits/stdc++.h> #define ll long long #define M 10001000 #define maxn 10200100 #define MOD 100000009 using namespace std; int cnt, tot; int vis[maxn],mu[maxn], prime[maxn]; ll h[maxn], sumv[maxn]; void init() { int i,j; h[1]=1; for(i=2;…
2749: [HAOI2012]外星人 Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Output 3 HINT Test<=50 Pi<=10^5,1<=Q1<=10^9 Source [分析] 额,一开始还看不懂题目..phi的x表示phi的x阶函数,即phi[phi[phi[...phi[N]]]]],x个phi... 然后不会做... 我们先来熟悉一下欧拉函数 2-…
题目链接:https://www.luogu.com.cn/problem/P4464 简记$gcd(x,y)=(x,y)$. 推式子: $\sum_{i=1}^{n}{(i,n)^xlcm(i,n)^y}$ $=\sum_{i=1}^{n}{(i,n)^{x-y}(in)^y}$ $=n^y\sum_{d|n}d^{x-y}\sum_{i}i^y[(i,n)=d]$ $=n^y\sum_{d|n}{d^{x-y}\sum_{i=1}^{\frac{n}{d}}{(id)^y[(i,\frac{…
下文中所有讨论都在数论函数范围内开展. 数论函数指的是定义域为正整数域, 且值域为复数域的函数. 数论意义下的和式处理技巧 因子 \[ \sum_{d | n} a_d = \sum_{d | n} a_{\frac n d} \] 双重因子 \[ \sum_{k | n} \sum_{j | k} a_{k, j} = \sum_{k | n} \sum_{j | \frac n k} a_{jk, k} \] \[ \sum_{n | k} \sum_{k | j} a_{k, j} = \…
4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 241  Solved: 119[Submit][Status][Discuss] Description 给下N,M,K.求 Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. Output 如题 Sample Input 1 23 3 Sample Outpu…
题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由于要处理多组询问,所以 bzoj2154 的做法就不好用了,但是这个结论可以套用过来. 然后推公式: (UPD:上面公式最后一行请自行把 $k$ 改成 $n$ ... 由于这里是图片形式就不改了) 设f1(n)=n2mu(n),f2(n)=n,则显然f2是积性函数,f1为两个积性函数的乘积,也是积性…
2693: jzptab Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1194  Solved: 455[Submit][Status][Discuss] Description Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M Output T行 每行一个整数 表示第i组数据的结果 Sample Input 1 4 5 Sample Output 122 HINT T <= 10000 N, M<=1000000…
题意:\(f(n)\)为n的质因子分解中的最大幂指数,求\(\sum_{i=1}^n \sum_{j=1}^m f(gcd(i,j))\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d|D} f(d)\mu(\frac{D}{d}) \frac{n}{D} \frac{m}{D} \] 这次函数是\(g = (f*\mu )\),\(f\)显然不是积性函数,但我们照样可以用线性筛 具体做法我晚上回家再补吧草稿纸忘带了... 补: \(g(p^a)=p-(p-1)\) 因为卷了\(\…
[BZOJ4804]欧拉心算 Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10^7 Output 按读入顺序输出答案. Sample Input 1 10 Sample Output 136 题解: 显然,$\varphi$和$\mu$都是积性函数,卷起来肯定也是积性函数,可以线性筛来搞.但是本蒟蒻到这里就卡住了,怎么线性筛啊?于是找题解,发现题解都说很简单.无奈,只好打表找规律了.(…
一道杜教筛的板子题. 两个都是积性函数,所以做法是一样的.以mu为例,设\( f(n)=\sum_{d|n}\mu(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\mu(i) \),然后很显然对于mu\( g(n)=1\),对于phi\( g(n)=n*(n+1)/2 \),然后可以这样转化一下: \[ g(n)=\sum_{i=1}^{n}\sum_{d|n}\mu(d) \] \[ =\sum_{d=1}^{n}\mu(d)\left \lflo…
Description 给下N,M,K.求 感觉好迷茫啊,很多变换看的一脸懵逼却又不知道去哪里学.一道题做一上午也是没谁了,, 首先按照套路反演化到最后应该是这个式子 $$ans = \sum_{d = 1}^n d^k \sum_{i = 1}^{\frac{n}{d}} \frac{n}{di} \frac{m}{di} \mu(i)$$ 这样就可以$O(n)$计算 继续往下推,考虑$\frac{n}{di} \frac{m}{di}$对答案的贡献 设$T = id$ $ans = \sum…
题意 求$$\sum_1^n \sum_1^n \phi(gcd(i, j))$$ $T \leqslant 5000, N \leqslant 10^7$ Sol 延用BZOJ4407的做法 化到最后可以得到 $$\sum_{T = 1}^n \frac{n}{T} \frac{n}{T} \sum_{d \mid T}^n \phi(d) \mu(\frac{T}{d})$$ 后面的那个是积性函数,直接筛出来 注意这个函数比较特殊,筛的时候需要分几种情况讨论 1. $H(p) = p - 2…
Deciphering Password Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2357    Accepted Submission(s): 670 Problem Description Xiaoming has just come up with a new way for encryption, by calculati…
updata on 2020.4.3 添加了欧拉\(\varphi\)函数为积性函数的证明和它的计算方式 1.积性函数 设\(f(n)\)为定义在正整数上的函数,若\(f(1)=1\),且对于任意正整数\(a,b\),若a,b互质就有: \[f(ab)=f(a)f(b) \] 则\(f(n)\)为积性函数 若不要求a,b互质,则\(f(n)\)为完全积性函数 2.计算 求出n的分解式 \(n=\prod_{i=1}^m {p_i}^{k_i}\),则有: \(f(n)=\prod_{i=1}^k…