基本定义直接上图
还有神奇教学网站 莫比乌斯反演入门和欧拉反演orz
上图中k的含义:将n分解\(n = {p_1}^{a_1}{p_2}^{a_2}...{p_k}^{a_k}\) n的所有因子中,有r个质因子的方案数为C(r,k),\(\therefore \mu = (-1)^rC(r,k)\)
\(\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor\)
题意
整除分块模板,
题解
注意到\(\lfloor\frac{n}{i}\rfloor\)只有\(\sqrt{n}\)种取值。
求和时我们从小到大枚举每次使\(\lfloor\frac{n}{i}\rfloor\)变化的i即可,
如何枚举?注意到r=n/i是连续\(\lfloor\frac{n}{i}\rfloor\)串以i结尾的最后一个数的位置(数组下标从1开始),
所以下一个l=r+1;而这个区间内\(\lfloor\frac{n}{i}\rfloor\)的值就是n/l。
另外有性质:
\(\lfloor\frac{\lfloor\frac{n}{a}\rfloor}{b}\rfloor = \lfloor\frac{n}{ab}\rfloor\)
\(\lceil\frac{\lceil\frac{n}{a}\rceil}{b}\rceil = \lceil\frac{n}{ab}\rceil\)
代码
for(int l=1,r;l<=n;l=r+1)
{
r=n/(n/l);
ans+=(r-l+1)*(n/l);
}
//整除分块向上取整题[gym101485]Debugging
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int nmax=1e6+100;
ll dp[nmax];
const ll inf=1e15;
ll dfs(ll n,ll R,ll P){
if(n<=1) return 0;
if(dp[n]) return dp[n];
dp[n]=(n-1)*P+R;
for(int l=2,r;l<=(n-1);l=r+1){
//每组l-r个,组数均为n/l
r=(n-1)/((n-1)/l);
/*
空格要填上n/l个,无论是除的尽除不尽。
8对于l=3:00100100
r=4:00010001
要填的空格数=组数 8/3=8/4
*/
ll tt=dfs(l-1,R,P)+R+((n-1)/l)*P;
dp[n]=min(dp[n],tt);
}
return dp[n];
}
int main(){
ll n,r,p;
scanf("%I64d%I64d%I64d",&n,&r,&p);
printf("%I64d\n",dfs(n,r,p));
return 0;
}
HDU5528 Count a * b (2015长春B )
题意
题解
数论函数进阶题。
涉及迪利克雷卷积的一些推导。
代码
//头文件省略
心路历程
orz数论大佬
先挖坑
bzoj2820 P2257 YY的GCD
题意
\(\sum\limits ^{n}_{i=1}\sum\limits ^{m}_{j=1}[ gcd( i,j) =p]\)
题解
不能再用入门篇中解\(\sum\limits ^{n}_{i=1}\sum\limits ^{n}_{j=1}[ gcd( i,j) =p]\) 时的 $\phi $前缀和.
考虑算 \(\sum\limits ^{n}_{i=1}\sum\limits ^{m}_{j=1} gcd( i,j) *2-1\) 时的容斥。
当时用的是\(f[x]=(n/x)*(m/x)-Σ(2*x<=i*x<=min(m,n))f[i*x]\) 倒着更新的容斥。
这里正式给出容斥公式:
\(\left| \bigcup_{i=1}^n A_i \right| = \sum_{i=1}^n|A_i| - \sum_{1\leq i<j\leq n} |A_i \cap A_j| + \sum _{1\leq i<j<k\leq n}|A_i \cap A_j \cap A_k| - \cdots + (-1)^{n-1} | A_1 \cap \cdots \cap A_n |\)
i.e. \(\left|\bigcup_{i=1}^n A_i \right| = \sum_{\emptyset \neq J\subseteq \{1,2,\ldots ,n\}} (-1)^{|J|-1}{\Biggl |}\bigcap_{j\in J}A_{j}{\Biggr |}\)
开头的两个网站给出了山寨做法,这里给出正式的公式:
代码
//头文件省略
心路历程
P2522 BZOJ2301 hdu1695(数据弱) Problem b
题意
\(\sum\limits ^{b}_{i=a}\sum\limits ^{d}_{j=c} gcd( i,j) =k\)
题解
代码
//头文件省略
心路历程
P3312 [SDOI2014] bzoj3529 数表
题意
$\sum\limits _{ \begin{array}{l}
1\leqslant i\leqslant n\
1\leqslant j\leqslant m\
F( gcd( i,j)) \leqslant a
\end{array}} F( gcd( i,j)) mod 2^{31} $
题解
代码
//头文件省略
心路历程
P1829 bzoj 2154 [国家集训队]Crash的数字表格 / JZPTAB
题意
\(\sum\limits ^{n}_{i=1} \sum\limits ^{m}_{j=1} lcm( i,j)\)
题解
鬼畜推导
代码
//头文件省略
心路历程
P1829 [国家集训队]Crash的数字表格 / JZPTAB
题意
同上题,多组数据
题解
代码
//头文件省略
心路历程