省选数论总结

前言

此篇仅供个人学习总结使用

常见符号及其意义

  1. a ∣ b a\mid b ab表示 a a a b b b的约数
  2. ⌊ a b ⌋ \lfloor \frac{a}{b} \rfloor ba,表示 a a a除以 b b b下取整
  3. ∏ i = 1 a p i \prod \limits ^a_{i=1}p_i i=1api表示 p 1 , p 2 , . . . p n p_1,p_2,...p_n p1,p2,...pn的乘积
  4. ∑ i = 1 n a i \sum \limits ^n_{i=1}a_i i=1nai表示 a 1 , a 2 , . . a n a_1,a_2,..a_n a1,a2,..an的和
  5. a ≡ b ( m o d p ) a \equiv b \pmod p ab(modp)表示 a a a b b b p p p的结果是相同的
  6. ∑ d ∣ n \sum\limits_{d\mid n} dn表示枚举 n n n的所有因子 d d d
  7. f × g ( x ) f \times g(x) f×g(x)表示 f f f函数与 g g g函数的狄利克雷卷积
  8. ∫ a b f ( x ) d x \int_a^b f(x)dx abf(x)dx表示定积分
  9. f ( x ) = [ x = 1 ] f(x)=[x=1] f(x)=[x=1]表示 f ( x ) f(x) f(x)只有在 x = 1 x=1 x=1的时候才为 1 1 1,其他情况为 0 0 0

数论函数

数论函数是定义域为正整数的函数,又叫做算数函数

积性函数

1. 定义

对于一个数论函数 f ( n ) f(n) f(n),如果 a a a, b b b互质, f ( a b ) = f ( a ) f ( b ) f(ab)=f(a)f(b) f(ab)=f(a)f(b),那么 f ( n ) f(n) f(n)为积性函数.特殊的,如果对于任意的 a , b a,b a,b都有 f ( a b ) = f ( a ) f ( b ) f(ab)=f(a)f(b) f(ab)=f(a)f(b),那么 f ( n ) f(n) f(n)为完全积性函数

2.常见的积性函数
  1. 欧拉函数 ϕ ( n ) \phi(n) ϕ(n)
  2. 莫比乌斯函数 μ ( n ) \mu(n) μ(n)
  3. 幂函数(完全积性) f k ( n ) = n k f_k(n)=n^k fk(n)=nk
  4. 除数函数 σ x n = ∑ d ∣ n d x \sigma_xn=\sum\limits_{d\mid n}d^x σxn=dndx,即所有因子的 x x x次幂之和.特殊的,当 x = 0 x=0 x=0的时候表示约数的个数,当 x = 1 x=1 x=1的时候表示约数之和
  5. 单位函数(完全积性) i d ( n ) = n id(n)=n id(n)=n
  6. 元函数(完全积性) e ( n ) = [ n = 1 ] e(n)=[n=1] e(n)=[n=1]
  7. 恒等函数(完全积性) I ( n ) = 1 I(n)=1 I(n)=1
3.利用线性筛预处理普通的积性函数

积性函数一般可以利用线性筛预处理,如莫比乌斯函数、欧拉函数等.
积性函数满足 f ( n ) = ∏ p i f ( p i k i ) f(n)=\prod_{p_i}f(p_i^{k_i}) f(n)=pif(piki),线性筛的时候一般分为两种情况:

  1. 新增加了一种质因子,直接用定义即可
  2. 最小质因子的幂次增加1,根据具体题目具体分析

    假设 f f f函数为积性函数 f ( n ) = ∑ d ∣ n d f(n)=\sum_{d\mid n}d f(n)=dnd ( f (f (f为因子之和函数 ) ) ),线性筛的时候有两种情况
    1.当 i i i不是 p p p的倍数,则 f ( i × p ) = f ( i ) × f ( p ) f(i\times p)=f(i)\times f(p) f(i×p)=f(i)×f(p)
    2. i i i p p p的倍数,则考虑 f ( i × p ) f(i\times p) f(i×p) f ( i ) f(i) f(i)多了什么,实际上是某个 f ( p i k i ) f(p_i^{k_i}) f(piki)变成了 f ( p i k i + 1 ) f(p_i^{k_i+1}) f(piki+1),在这里可以先除以 f ( p i k i ) f(p_i^{k_i}) f(piki),再乘 f ( p i k i + 1 ) f(p_i^{k_i+1}) f(piki+1).

欧拉函数

  1. ϕ ( 1 ) = 1 \phi(1)=1 ϕ(1)=1
  2. ϕ ( p ) = p − 1 \phi(p)=p-1 ϕ(p)=p1 ( p (p (p为素数 ) ) )
  3. ϕ ( p k ) = p k − p k − 1 = ( p − 1 ) × p k − 1 \phi(p^k)=p^k-p^{k-1}=(p-1)\times p^{k-1} ϕ(pk)=pkpk1=(p1)×pk1 ( p (p (p为素数 ) ) )
  4. m , n m,n m,n互质,则有 ϕ ( n ∗ m ) = ϕ ( n ) ∗ ϕ ( m ) \phi(n*m)=\phi(n)*\phi(m) ϕ(nm)=ϕ(n)ϕ(m)
  5. 对于任意 n = p 1 k 1 ∗ p 2 k 2 ∗ . . . ∗ p r k r n=p_1^{k_1}*p_2^{k_2}*...*p_r^{k_r} n=p1k1p2k2...prkr (其中 p 1 , p 2 , . . . , p k p_1,p_2,...,p_k p1,p2,...,pk n n n 的互不相同的质因子) 则有
    φ ( n ) = ∏ i = 1 r φ ( p i k i ) = ∏ i = 1 r ( p i − 1 ) p i k i − 1 = ∏ i = 1 r ( 1 − 1 p i ) ∗ p i k i = n ∗ ∏ i = 1 r ( 1 − 1 p i ) \varphi(n)=\prod_{i=1}^{r}\varphi(p_i^{k_i})=\prod_{i=1}^{r}(p_i-1)p_i^{k_i-1}=\prod_{i=1}^{r}(1-\frac 1{p_i})*p_i^{k_i}=n*\prod_{i=1}^{r}(1-\frac 1{p_i}) φ(n)=i=1rφ(piki)=i=1r(pi1)piki1=i=1r(1pi1)piki=ni=1r(1pi1)
  6. n > 1 n>1 n>1时,小于 n n n的数中,与 n n n互质的数的总和为 ϕ ( n ) ∗ n 2 \frac{\phi(n)*n}{2} 2ϕ(n)n
    由此推导可得 ∑ i = 1 n i ⋅ [ g c d ( i , n ) = = 1 ] = n ⋅ ϕ ( n ) + [ n = = 1 ] 2 \sum\limits_{i=1}^ni\cdot[gcd(i,n)==1]=n\cdot \frac{\phi(n)+[n==1]}{2} i=1ni[gcd(i,n)==1]=n2ϕ(n)+[n==1]
  7. ∑ d ∣ n ϕ ( d ) = n \sum\limits_{d\mid n}\phi(d)=n dnϕ(d)=n
  8. n , a n,a n,a为正整数且 n , a n,a n,a互质,则
    a ϕ ( n ) ≡ 1 ( m o d n ) a^{\phi(n)}\equiv 1\pmod n aϕ(n)1(modn),
    a ϕ ( n ) − 1 ≡ a − 1 ( m o d n ) a^{\phi(n)-1}\equiv a^{-1}\pmod n aϕ(n)1a1(modn)
    n > 1 , a , n n>1,a,n n>1,a,n互质, a b m o d    n = a b m o d    ϕ ( n ) m o d    n a^b\mod n=a^{b\mod \phi(n)}\mod n abmodn=abmodϕ(n)modn

莫比乌斯函数

1.定义

莫比乌斯函数 μ ( m ) \mu(m) μ(m)
定义 μ ( 1 ) = 1 \mu(1)=1 μ(1)=1
x = p 1 p 2 . . p n x=p_1p_2..p_n x=p1p2..pn,且 p i p_i pi为不同的质数(即 x x x由若干幂次为 1 1 1的质数相乘), μ ( x ) = ( − 1 ) n \mu(x)=(-1)^n μ(x)=(1)n,其他情况 μ ( x ) = 0 \mu(x)=0 μ(x)=0

2.性质

1. ∑ d ∣ n μ ( d ) = [ n = = 1 ] \sum_{d\mid n}\mu(d)=[n==1] dnμ(d)=[n==1]
2.莫比乌斯函数为积性函数

3.莫比乌斯函数的代码实现

利用积性性质线性筛 O ( n ) O(n) O(n)处理

const int N=1e5+10;
int mu[N],p[N],pn=0;//mu,质数,质数个数
bool flag[N];//标记质数 
void getmu(){
	mu[1]=1;pn=0;
	for(int i=2;i<N;i++){
		if(!flag[i]) mu[i]=-1;
		for(int j=1;j<=pn&&(ll)i*(ll)p[j]<N;j++){
			flag[i*p[j]]=1;
			if(!(i%p[j])){mu[i*p[j]]=0;break;}
			else mu[i*p[j]]=-mu[i];
		}
	}
} 
4.莫比乌斯函数与欧拉函数

应用卷积得:
ϕ ( n ) = ∑ d ∣ n μ ( d ) f ( n d ) = ∑ d ∣ n μ ( d ) n d \phi(n)=\sum\limits_{d\mid n}\mu(d)f(\frac{n}{d})=\sum\limits_{d\mid n}\mu(d)\frac{n}{d} ϕ(n)=dnμ(d)f(dn)=dnμ(d)dn

莫比乌斯反演

1.公式

f ( n ) = ∑ d ∣ n g ( d ) = ∑ d ∣ n g ( n d ) f(n)=\sum\limits_{d\mid n}g(d)=\sum\limits_{d\mid n}g(\frac{n}{d}) f(n)=dng(d)=dng(dn)
g ( n ) = ∑ d ∣ n f ( d ) μ ( n d ) = ∑ d ∣ n f ( n d ) μ ( d ) g(n)=\sum\limits_{d\mid n}f(d)\mu(\frac{n}{d})=\sum\limits_{d\mid n}f(\frac{n}{d})\mu(d) g(n)=dnf(d)μ(dn)=dnf(dn)μ(d)
以上二式互为充分必要条件

另一种形式:
f ( n ) = ∑ n ∣ d g ( d ) f(n)=\sum\limits_{n\mid d}g(d) f(n)=ndg(d)
g ( n ) = ∑ n ∣ d f ( d ) μ ( d n ) g(n)=\sum\limits_{n\mid d}f(d)\mu(\frac{d}{n}) g(n)=ndf(d)μ(nd)

狄利克雷卷积

1.定义

定义两个数论函数的狄利克雷卷积为:
( f × g ) ( n ) = ∑ d ∣ n f ( d ) × g ( n d ) (f\times g)(n)=\sum\limits_{d\mid n}f(d)\times g(\frac{n}{d}) (f×g)(n)=dnf(d)×g(dn)
也可以写成
( f × g ) ( n ) = ∑ a b = n f ( a ) × g ( b ) (f\times g)(n)=\sum\limits_{ab=n}f(a)\times g(b) (f×g)(n)=ab=nf(a)×g(b)

2.狄利克雷卷积的性质及其常见应用
  1. 交换律: f × g = ( g × f ) f\times g=(g\times f) f×g=(g×f)
  2. 结合律: ( f × g ) × h = f × ( g × h ) (f\times g)\times h=f\times (g\times h) (f×g)×h=f×(g×h)
  3. 分配率: ( f + g ) × h = f × h + g × h (f+g)\times h=f\times h+g\times h (f+g)×h=f×h+g×h
  4. 如果 f ( n ) , g ( n ) f(n),g(n) f(n),g(n)都为积性函数,那么他们的狄利克雷卷积也为积性函数
  5. 任何数论函数都与元函数的卷积等于函数自己,即 ( f × e ) ( n ) = ∑ d ∣ n f ( d ) × e ( n d ) = f ( n ) (f\times e)(n)=\sum\limits_{d\mid n}f(d)\times e(\frac{n}{d})=f(n) (f×e)(n)=dnf(d)×e(dn)=f(n)
  6. ( μ × I ) ( n ) = ∑ d ∣ n μ ( d ) × I ( n d ) = ∑ d ∣ n μ ( d ) = e ( n ) (\mu \times I)(n)=\sum\limits_{d\mid n}\mu(d)\times I(\frac{n}{d})=\sum\limits_{d\mid n}\mu(d)=e(n) (μ×I)(n)=dnμ(d)×I(dn)=dnμ(d)=e(n)
  7. ϕ × I ( n ) = ∑ d ∣ n ϕ ( d ) × I ( n d ) = ∑ d ∣ n ϕ ( d ) = n = i d ( n ) \phi\times I(n)=\sum\limits_{d\mid n}\phi(d)\times I(\frac{n}{d})=\sum\limits_{d\mid n}\phi(d)=n=id(n) ϕ×I(n)=dnϕ(d)×I(dn)=dnϕ(d)=n=id(n)
  8. ϕ = i d × μ \phi =id\times \mu ϕ=id×μ ( ( (第七条左右式同乘 μ \mu μ ) ) )
3.狄利克雷卷积的代码实现

复杂度: O ( n l o g n ) O(nlogn) O(nlogn)

for (int i = 1; i <= n; i++) {
	for (int j = 1; i*j <= n; j++) {
		res[i * j] += f[i] * g[j];
	}
}
4.狄雷克雷卷积与其他函数的结合应用
推导莫比乌斯反演

已知一个数论函数 f ( n ) = ∑ d ∣ n g ( d ) f(n)=\sum\limits_{d\mid n}g(d) f(n)=dng(d),那么 f = g × I f=g\times I f=g×I ( ( ( g g g函数与恒等函数 I I I函数的卷积 ) ) ),根据狄利克雷卷积的性质,在两边同乘 μ \mu μ,得到:
f × μ = g × I × μ = g × e = g f\times \mu=g\times I\times \mu=g\times e=g f×μ=g×I×μ=g×e=g
所以
g ( n ) = ∑ d ∣ n f ( d ) μ ( n d ) g(n)=\sum\limits_{d\mid n}f(d)\mu(\frac{n}{d}) g(n)=dnf(d)μ(dn)
可见狄利克雷卷积对原问题进行了更高层次的抽象,使问题变得简单

推导 μ \mu μ ϕ \phi ϕ的关系

已知欧拉函数一性质:
n = ∑ d ∣ n ϕ ( d ) n=\sum\limits_{d\mid n}\phi(d) n=dnϕ(d)
f ( n ) = n , g ( n ) = ϕ ( n ) f(n)=n,g(n)=\phi(n) f(n)=n,g(n)=ϕ(n),反演得:
ϕ ( n ) = ∑ d ∣ n μ ( d ) f ( n d ) = ∑ d ∣ n μ ( d ) n d \phi(n)=\sum\limits_{d\mid n}\mu(d)f(\frac{n}{d})=\sum\limits_{d\mid n}\mu(d)\frac{n}{d} ϕ(n)=dnμ(d)f(dn)=dnμ(d)dn

整除分块

1.概念思想

考虑最简单的情况,对于 ∑ i = 1 n ⌊ n i ⌋ \sum\limits_{i=1}^n{\lfloor\frac{n}{i}\rfloor} i=1nin
通过一些性质的分析可发现, ⌊ n i ⌋ \lfloor\frac{n}{i}\rfloor in是由若干段值相等的区间构成的,假设该区间左边界为 L L L,右边界为 R R R,那么对于区间内的每个值,往往可以用基本相同的式子得到答案,乘上与区间长度有关的系数即可,这样一段取值序列 [ 1 , n ] [1,n] [1,n]被分成 n \sqrt n n 块,复杂度 O ( n ) O(\sqrt n) O(n )
在最简单的整除分块中,对于已知的 L L L,对应的 R = ⌊ N ⌊ N L ⌋ ⌋ R=\lfloor\frac{N}{\lfloor\frac{N}{L}\rfloor}\rfloor R=LNN

2.定理
  1. ∑ i = 1 n ⌊ n i ⌋ = 2 ∑ i = 1 ⌊ n ⌋ ⌊ n i ⌋ − ( ⌊ n ⌋ ) 2 \sum\limits_{i=1}^n\lfloor\frac{n}{i}\rfloor=2\sum\limits_{i=1}^{\lfloor\sqrt{n}\rfloor}\lfloor\frac{n}{i}\rfloor-(\lfloor\sqrt{n}\rfloor)^2 i=1nin=2i=1n in(⌊n )2
  2. ∑ i = 1 n ⌊ n i ⌋ = ∑ d = 1 n σ 0 ( d ) \sum\limits_{i=1}^n{\lfloor\frac{n}{i}\rfloor}=\sum\limits_{d=1}^n{\sigma_0(d)} i=1nin=d=1nσ0(d) ( ( ( σ 0 ( d ) \sigma_0(d) σ0(d) 表示 d d d 的因子个数 ) ) )
  3. ∑ i = 1 n ⌊ n i ⌋ = ∑ i = 1 n ∑ j = 1 n [ i ⋅ j ≤ n ] \sum\limits_{i=1}^n{\lfloor\frac{n}{i}\rfloor}=\sum\limits_{i=1}^n\sum\limits_{j=1}^n[i\cdot j\leq n] i=1nin=i=1nj=1n[ijn]
3.代码实现

假设求 ∑ i = 1 n ⌊ n i ⌋ \sum\limits_{i=1}^n{\lfloor\frac{n}{i}\rfloor} i=1nin,这里给出最基本的写法

ll get(ll n){
	ll ans=0;
	for(ll L=1,R;L<=n;L=R+1){
		R=n/(n/L);
		ans=(ans+(ll)(R-L+1)*(ll)(n/L)%M)%M;
	}
	return ans;
}
4.常见卷积
  1. ( μ × I ) ( n ) = ∑ d ∣ n μ ( d ) = e ( n ) = [ n = = 1 ] (\mu\times I)(n)=\sum\limits_{d\mid n}\mu(d)=e(n)=[n==1] (μ×I)(n)=dnμ(d)=e(n)=[n==1]
  2. ( ϕ × I ) ( n ) = ∑ d ∣ n ϕ ( d ) = n = i d ( n ) (\phi\times I)(n)=\sum\limits_{d\mid n}\phi(d)=n=id(n) (ϕ×I)(n)=dnϕ(d)=n=id(n)
  3. ϕ = i d × μ \phi=id\times \mu ϕ=id×μ
  4. ( f × e ) ( n ) = f ( n ) (f\times e)(n)=f(n) (f×e)(n)=f(n)

积性函数前缀和

1.概念思想

对于积性函数f(n),求
S ( n ) = ∑ i = 1 n f ( i ) ( 1 ≤ n ≤ 1 0 1 0 ) S(n)=\sum\limits_{i=1}^nf(i)(1\leq n\leq 10^10) S(n)=i=1nf(i)(1n1010)
以上问题可用杜教筛解决

为解决此问题,先尝试计算 g × f g\times f g×f的前缀和:
∑ i = 1 n ( f × g ) ( i ) = ∑ i = 1 n ∑ d ∣ i g ( d ) f ( i d ) = ∑ d = 1 n g ( d ) ∑ d ∣ i f ( i d ) = ∑ d = 1 n g ( d ) ∑ i = 1 ⌊ n d ⌋ f ( i ) = ∑ i = 1 n g ( i ) S ( ⌊ n i ⌋ ) \sum\limits_{i=1}^n(f\times g)(i)=\sum\limits_{i=1}^n\sum\limits_{d\mid i}g(d)f(\frac{i}{d})=\sum\limits_{d=1}^ng(d)\sum\limits_{d\mid i}f(\frac{i}{d})=\sum\limits_{d=1}^ng(d)\sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i)=\sum\limits_{i=1}^ng(i)S(\lfloor\frac{n}{i}\rfloor) i=1n(f×g)(i)=i=1ndig(d)f(di)=d=1ng(d)dif(di)=d=1ng(d)i=1dnf(i)=i=1ng(i)S(⌊in⌋)
得到:
g ( 1 ) S ( n ) = ∑ i = 1 n ( f × g ) ( i ) − ∑ i = 2 n g ( i ) S ( ⌊ n i ⌋ ) g(1)S(n)=\sum\limits_{i=1}^n(f\times g)(i)-\sum\limits_{i=2}^ng(i)S(\lfloor\frac{n}{i}\rfloor) g(1)S(n)=i=1n(f×g)(i)i=2ng(i)S(⌊in⌋)

S ( n ) S(n) S(n)是要求的值, S ( ⌊ n i ⌋ ) S(\lfloor\frac{n}{i}\rfloor) S(⌊in⌋)可以递归解决,关键要找到合适的 g g g
用线性筛等预处理出 S ( i ) S(i) S(i) n 2 3 n^{\frac{2}{3}} n32项,剩余的项采用记忆化搜索(用hash或者map记录值)
假设查询q次前缀和,总复杂度为 O ( q + n 2 3 ) O(q+n^{\frac{2}{3}}) O(q+n32),花在查询上的复杂度始终是均摊 O ( n 2 3 ) O(n^{\frac{2}{3}}) O(n32)

2.代码实现

这里以求 μ \mu μ的前缀和为例
假设题目 n ≤ 1 e 9 n\leq 1e9 n1e9
I I I μ \mu μ卷积,得
I ( 1 ) S ( n ) = ∑ i = 1 n ( μ × I ) ( i ) − ∑ i = 2 n I ( i ) S ( ⌊ n i ⌋ ) I(1)S(n)=\sum\limits_{i=1}^n(\mu\times I)(i)-\sum\limits_{i=2}^nI(i)S(\lfloor\frac{n}{i}\rfloor) I(1)S(n)=i=1n(μ×I)(i)i=2nI(i)S(⌊in⌋)

S ( n ) = 1 − ∑ i = 2 n S ( ⌊ n i ⌋ ) S(n)=1-\sum\limits_{i=2}^nS(\lfloor\frac{n}{i}\rfloor) S(n)=1i=2nS(⌊in⌋)

const int N=1e6+5;//1e9的2/3次幂为1e6 
const ll M=1e9+7;//题目的模数 
#define un_mp unordered_map
un_mp<ll,ll> q;//unordered_map实现记忆化搜索 
int mu[N],p[N],pn=0;bool flag[N];
void pre(){
	mu[1]=1;
	for(int i=2;i<N;i++){
		if(!flag[i]) p[++pn]=i,mu[i]=(-1+M)%M;;
		for(int j=1;j<=pn&&(ll)i*(ll)p[j]<N;j++){
			flag[i*p[j]]=1;
			if(!(i%p[j])){mu[i*p[j]]=0;break;}
			else mu[i*p[j]]=(M-mu[i])%M;
		}
	}
	for(int i=2;i<N;i++) mu[i]=(mu[i]+mu[i-1])%M;//预处理前若干项前缀和 
}
ll solve(ll n){//剩余的前缀和递归计算 
	if(n<N) return mu[n];//若已预处理,直接return值 
	if(q[n]) return q[n];//若已记忆化,直接return值 
	ll res=1ll;
	for(ll L=2,R;L<=n;L=R+1){//整除分块加速计算 
		R=(n/(n/L));
		res=(res+M-(ll)(R-L+1)%M*solve(n/L)%M)%M;
	}
	return q[n]=res;//记忆化 
}
3.常见的前缀和与g的选取
  1. 对于 ∑ i = 1 n μ ( i ) \sum\limits_{i=1}^n\mu(i) i=1nμ(i),选取 I I I: S ( n ) = 1 − ∑ i = 2 n S ( ⌊ n i ⌋ ) S(n)=1-\sum\limits_{i=2}^nS(\lfloor\frac{n}{i}\rfloor) S(n)=1i=2nS(⌊in⌋)
  2. 对于 ∑ i = 1 n ϕ ( i ) \sum\limits_{i=1}^n\phi(i) i=1nϕ(i),选取 I I I: S ( n ) = n ∗ ( n + 1 ) / 2 − ∑ i = 2 n S ( ⌊ n i ⌋ ) S(n)=n*(n+1)/2-\sum\limits_{i=2}^nS(\lfloor\frac{n}{i}\rfloor) S(n)=n(n+1)/2i=2nS(⌊in⌋)
  3. ϕ = i d × μ \phi=id\times \mu ϕ=id×μ:变成求 ϕ \phi ϕ的前缀和

常用技巧

1.推导方法
  1. 交换枚举的先后顺序
  2. 交换约数与倍数
  3. 对于 d ∣ n d\mid n dn,往往可以转而枚举 d d d n n n d d d的倍数 ⌊ n d ⌋ \lfloor\frac{n}{d}\rfloor dn,此时要注意原有数值所代表的的意义及其表示在操作后的变化,分清系数的关系
  4. 替换和式中的标号
  5. μ \mu μ替换形似 [ g = = 1 ] [g==1] [g==1]的式子
  6. 对于 [ g = = d ] [g==d] [g==d]的式子,可以将 d d d提出,然后有选择地进行步骤5
  7. 若式子里有 g c d ( i , j ) gcd(i,j) gcd(i,j)的形式,可以枚举 g c d ( i , j ) gcd(i,j) gcd(i,j)的值,即枚举 d d d后转化为 [ g c d ( i , j ) = = d ] [gcd(i,j)==d] [gcd(i,j)==d]的形式,根据题目有选择地进行步骤6
  8. 常见的卷积形式见上文
2.计算优化
  1. 对于 ∑ i = 1 n ⌊ n i ⌋ \sum\limits_{i=1}^n\lfloor\frac{n}{i}\rfloor i=1nin,可以整除分块加速计算
3.其他定理
  1. ∑ i = 1 n i = n ( n + 1 ) 2 \sum\limits_{i=1}^ni=\frac{n(n+1)}{2} i=1ni=2n(n+1)
  2. ∑ i = 1 n i 2 = n ( n + 1 ) ( 2 n + 1 ) 6 \sum\limits_{i=1}^ni^2=\frac{n(n+1)(2n+1)}{6} i=1ni2=6n(n+1)(2n+1)
  3. ∑ i = 1 n i 3 = [ n ( n + 1 ) 2 ] 2 \sum\limits_{i=1}^ni^3=[\frac{n(n+1)}{2}]^2 i=1ni3=[2n(n+1)]2
  4. 1 + 3 + 5 + . . . + ( 2 n − 1 ) = n 2 1+3+5+...+(2n-1)=n^2 1+3+5+...+(2n1)=n2

TIPS

  1. 整除分块时注意int和long long在效率上的差别
  2. μ \mu μ可能为负,在取模题中注意对其取模
  3. 注意不要爆int,不要爆int,不要爆int
  4. 对于某些毒瘤题目,酌情使用unsigned long long
  5. 注意 ∑ i = 1 n \sum\limits_{i=1}^n i=1n ∑ i = 1 n i \sum\limits_{i=1}^ni i=1ni的区别
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值