首页 > 其他分享 >积性函数学习笔记

积性函数学习笔记

时间:2023-01-26 15:11:06浏览次数:60  
标签:lfloor 函数 积性 LL 笔记 rfloor sum

数论分块

对于形如

\[\sum_{i=1}^nf(i)g(\lfloor\frac{n}{i}\rfloor) \]

的式子,我们可以发现 \(\lfloor\dfrac{n}{i}\rfloor\) 的值可以分成若干块,具体的,设上一块的右边界为 \(r'\),则当前块的左边界 \(l=r'+1\),右边界 \(r=\left\lfloor\dfrac{n}{\left\lfloor\dfrac{n}{l}\right\rfloor}\right\rfloor\)。块数为 \(O(\sqrt n)\) 量级。

code:

LL S(LL n) {
  LL s = 0;
  for (LL l = 1, r; l <= n; l = r + 1) {
    r = n / (n / l);
    s += (SumF(r) - SumF(l - 1)) * G(n / l);
  }
  return s;
}

扩展:

多维数论分块

如果式子形如

\[\sum_{i=1}^nf(i)g(\lfloor\frac{a_1}{i}\rfloor,\lfloor\frac{a_2}{i}\rfloor,\cdots,\lfloor\frac{a_k}{i}\rfloor) \]

在取总块右边界的时候把 \(k\) 个块的右边界取 \(\min\) 即可。块的量级为 \(O(k\sqrt{a})\)。

LL S(LL n) {
  LL s = 0;
  for (LL l = 1, r; l <= n; l = r + 1) {
    r = INT64_MAX;
    for (int i = 1; i <= k; ++i) {
      r = min(r, a[i] / (a[i] / l));
    }
    s += (SumF(r) - SumF(l - 1)) * G(a[1] / l, a[2] / l, ..., a[k] / l);
  }
  return s;
}

多维嵌套数论分块

式子形如

\[\begin{aligned} S_k(n)&=\sum_{i=1}^ng_k(i)S_{k-1}(\lfloor\frac{n}{i}\rfloor)\\ S_0(n)&=f(n) \end{aligned} \]

直接递归,总块数量级为 \(O(n^{1-2^{-k}})\)。

LL S(LL n, int k) {
  if (k == 0) {
    return F(n);
  }
  LL s = 0;
  for (LL l = 1, r; l <= n; l = r + 1) {
    r = n / (n / l);
    s += (SumG(r, k) - SumG(l - 1, k)) * S(n / l, k - 1);
  }
  return s;
}

积性函数

定义

如果一个数论函数 \(f(n)\) 满足对于所有 \(\gcd(i,j)=1\),有 \(f(ij)=f(i)f(j)\),那么 \(f(n)\) 被称为积性函数。

特别的,如果对于所有 \(i,j\) 都有 \(f(ij)=f(i)f(j)\),那么 \(f(n)\) 被称为完全积性函数。

性质

如果 \(f(n)\) 和 \(g(n)\) 都是积性函数,那么下列函数也是积性函数:

\[\begin{aligned} h(x)&=f(x^p)\\ h(x)&=f(x)^p\\ h(x)&=f(x)g(x)\\ h(x)&=\sum_{d\mid x}f(d)g(x/d) \end{aligned} \]

常见积性函数

  • 单位函数 \(\epsilon(n)=[n=1]\),完全积性函数
  • 幂函数 \(\operatorname{id}^k(n)=n^k\),\(\operatorname{id}^1\) 一般简记为 \(\operatorname{id}\),完全积性函数
  • 常数函数 \(1(n)=1\),也记作 \(I\),完全积性函数
  • 因数个数函数 \(\operatorname{d}(n)=\displaystyle\sum_{d\mid n}1=\displaystyle\sum_{d=1}^n[d\mid n]\)。
  • 除数函数 \(\sigma_k(n)=\displaystyle\sum_{d\mid n}d^k\),\(k=1\) 时为因数和函数,\(k=0\) 时为因数个数函数。
  • 欧拉函数 \(\varphi(n)=\displaystyle\sum_{i=1}^n[\gcd(i,n)=1]\)。
  • 莫比乌斯函数 \(\mu(n)\),设 \(n=\prod_{i=1}^kp_i^{e_i}\),那么有 \(\mu(n)=\begin{cases} 1 & \text{if } n=1\\ 0 & \text{if } e_i>1\\ (-1)^k & \text{otherwise.} \end{cases}\)。

标签:lfloor,函数,积性,LL,笔记,rfloor,sum
From: https://www.cnblogs.com/bykem/p/17067840.html

相关文章

  • 若依实践笔记
    目标系统:若依前后分离版3.8.5菜单管理与代码生成的“冲突”菜单管理可以通过非编码方式创建和管理菜单和按钮组件,但以下情况下会与代码生成产生冲突:建目录A,目录A下建......
  • docker 日常命令小笔记
    目录​​常见命令​​​​启动并启动日志​​​​进入容器​​​​dockerfiles​​​​apk命令​​​​编辑网卡centos​​​​重启网卡​​​​查看防火墙的状态​​​​......
  • 数论技巧笔记
    处理取模:\(x\mod\p=x-p\lfloor\frac{x}{p}\rfloor\)。处理\(-1\)的幂:\((-1)^a=1-2(a\mod\2)=1-2(a-2\lfloor\frac{a}{2}\rfloor)\),从而把\(a......
  • 《RPC实战与核心原理》学习笔记Day9
    10|路由策略:怎么让请求按照设计的规则发到不同的节点上?我们在真实的环境中,服务提供方是以集群的方式对外提供服务,这对于服务调用方来说,就是一个借口会有多个服务提供方......
  • JavaScript学习笔记—Date
    在JS中所有的和时间相关的数据都由Date对象来表示对象的方法(1)getFullYear()返回当前日期的年份(4位)(2)getMonth()返回当前日期的月份(0-11)(3)getDate()返回当前日期的几......
  • JavaScript学习笔记—Math
    工具类为我们提供了数学运算相关的一些常量和方法常量(1)Math.PI圆周率方法(1)Math.abs()求一个数的绝对值(2)Math.min()求多个值中的最小值(3)Math.max()求多个值中的......
  • SQL Server 2000 函数使用---CAST 和 CONVERT
    将某种数据类型的表达式显式转换为另一种数据类型。CAST和CONVERT提供相似的功能。语法使用CAST:CAST(expressionASdata_type)使用CONVERT:CONVERT(data_type[(le......
  • (转)CreateProcess API函数的妙用
        CreateProcess(              LPCWSTRlpszImageName, //指向可执行的模块的指针            LPCWSTRlpszCmdLine, //指向可执行命......
  • 【模型检测学习笔记】1、系统分析相关基本概念
    验证方法模拟:动态验证,常用,如今最主流的验证方法。仿真:类似模拟,但依赖于硬件。形式化验证:静态验证,用数学方法对模型的功能、功能、规范做检验。验证的完备性高,但实施困难。......
  • 【个人笔记】2023年搭建基于webpack5与typescript的react项目
    写在前面由于我在另外的一些文章所讨论或分析的内容可能基于一个已经初始化好的项目,为了避免每一个文章都重复的描述如何搭建项目,我在本文会统一记录下来,今后相关的文章直......