基本定义直接上图
还有神奇教学网站 莫比乌斯反演入门和欧拉反演orz
上图中k的含义:将n分解(n = {p_1}^{a_1}{p_2}^{a_2}...{p_k}^{a_k}) n的所有因子中,有r个质因子的方案数为C(r,k),( herefore mu = (-1)^rC(r,k))
(sum_{i=1}^{n}lfloorfrac{n}{i} floor)
题意
整除分块模板,
题解
注意到(lfloorfrac{n}{i}
floor)只有(sqrt{n})种取值。
求和时我们从小到大枚举每次使(lfloorfrac{n}{i}
floor)变化的i即可,
如何枚举?注意到r=n/i是连续(lfloorfrac{n}{i}
floor)串以i结尾的最后一个数的位置(数组下标从1开始),
所以下一个l=r+1;而这个区间内(lfloorfrac{n}{i}
floor)的值就是n/l。
另外有性质:
(lfloorfrac{lfloorfrac{n}{a}
floor}{b}
floor = lfloorfrac{n}{ab}
floor)
(lceilfrac{lceilfrac{n}{a} ceil}{b} ceil = lceilfrac{n}{ab} ceil)
代码
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
",dfs(n,r,p));
return 0;
}
HDU5528 Count a * b (2015长春B )
题意
题解
数论函数进阶题。
涉及迪利克雷卷积的一些推导。
代码
//头文件省略
心路历程
orz数论大佬
先挖坑
bzoj2820 P2257 YY的GCD
题意
(sumlimits ^{n}_{i=1}sumlimits ^{m}_{j=1}[ gcd( i,j) =p])
题解
不能再用入门篇中解(sumlimits ^{n}_{i=1}sumlimits ^{n}_{j=1}[ gcd( i,j) =p]) 时的 $phi $前缀和.
考虑算 (sumlimits ^{n}_{i=1}sumlimits ^{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| igcup_{i=1}^n A_i ight| = sum_{i=1}^n|A_i| - sum_{1leq i<jleq n} |A_i cap A_j| + sum _{1leq i<j<kleq n}|A_i cap A_j cap A_k| - cdots + (-1)^{n-1} | A_1 cap cdots cap A_n |)
i.e. (left|igcup_{i=1}^n A_i ight| = sum_{emptyset eq Jsubseteq {1,2,ldots ,n}} (-1)^{|J|-1}{Biggl |}igcap_{jin J}A_{j}{Biggr |})
开头的两个网站给出了山寨做法,这里给出正式的公式:
代码
//头文件省略
心路历程
P2522 BZOJ2301 hdu1695(数据弱) Problem b
题意
(sumlimits ^{b}_{i=a}sumlimits ^{d}_{j=c} gcd( i,j) =k)
题解
代码
//头文件省略
心路历程
P3312 [SDOI2014] bzoj3529 数表
题意
$sumlimits _{ egin{array}{l}
1leqslant ileqslant n
1leqslant jleqslant m
F( gcd( i,j)) leqslant a
end{array}} F( gcd( i,j)) mod 2^{31} $
题解
代码
//头文件省略
心路历程
P1829 bzoj 2154 [国家集训队]Crash的数字表格 / JZPTAB
题意
(sumlimits ^{n}_{i=1} sumlimits ^{m}_{j=1} lcm( i,j))
题解
鬼畜推导
代码
//头文件省略
心路历程
P1829 [国家集训队]Crash的数字表格 / JZPTAB
题意
同上题,多组数据
题解
代码
//头文件省略
心路历程