基本形式

f,gf,gf,g 函数卷起来写作 f∗g(n)f * g (n)f∗g(n),等于 ∑d∣nf(d)g(nd)\sum_{d \mid n} f (d) g (\frac{n}{d})∑d∣n​f(d)g(dn​)

性质:

  • 若 f,gf, gf,g 都为(完全)积性函数,那么 f∗gf * gf∗g 也为(完全)积性函数。
  • f∗g=g∗ff * g = g * ff∗g=g∗f (交换律)
  • f∗g∗q=f∗(g∗q)f * g * q = f * (g * q)f∗g∗q=f∗(g∗q) (结合律)

例题

一、ClarkeandmathClarke \ and \ mathClarke and math

gi=∑i1∣i∑i2∣i1∑i3∣i2⋯∑ik∣ik−1fik=∑i1∣i∑i2∣i1∑i3∣i2⋯1(nik−1)∑ik∣ik−1fik⋅1(iik)=1k∗f(i)g0(i)=igk(i)=∑d∣igk−1(d)∗f(nd)\begin{aligned} g_i &= \sum_{i_1∣i}\sum_{i_2∣i1}\sum_{i_3∣i2}⋯\sum_{i_k∣i_{k−1}}f_{i_k} \\ &= \sum_{i_1∣i}\sum_{i_2∣i_1}\sum_{i_3∣i_2}⋯ 1(\frac{n}{i_{k - 1}}) \sum_{i_k∣i_{k−1}} f_{i_k} \cdot 1(\frac{i}{i_k}) \\ &= 1 ^ k * f (i) \\ g_0 (i) &= i \\ g_k (i) &= \sum_{d \mid i} g_{k - 1} (d) * f (\frac{n}{d}) \end{aligned} gi​g0​(i)gk​(i)​=i1​∣i∑​i2​∣i1∑​i3​∣i2∑​⋯ik​∣ik−1​∑​fik​​=i1​∣i∑​i2​∣i1​∑​i3​∣i2​∑​⋯1(ik−1​n​)ik​∣ik−1​∑​fik​​⋅1(ik​i​)=1k∗f(i)=i=d∣i∑​gk−1​(d)∗f(dn​)​

//author : LH ——Who just can eat S??t
//worship WJC ——Who can f??k tourist up and down and loves 周歆恬
//worship YJX ——Who can f??k WJC up and down
#include <cmath>
#include <queue>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define fi first
#define se second
#define db double
#define LL long long
#define ULL unsigned long long
#define PII pair <int, int>
#define MP(x,y) make_pair (x, y)
#define rep(i,j,k) for (int i = (j); i <= (k); ++i)
#define per(i,j,k) for (int i = (j); i >= (k); --i)template <typename T> T Max (T x, T y) { return x > y ? x : y; }
template <typename T> T Min (T x, T y) { return x < y ? x : y; }
template <typename T> T Abs (T x) { return x > 0 ? x : -x; }
template <typename T>
void read (T &x) {x = 0; T f = 1;char ch = getchar ();while (ch < '0' || ch > '9') {if (ch == '-') f = -1;ch = getchar ();}while (ch >= '0' && ch <= '9') {x = (x << 3) + (x << 1) + ch - '0';ch = getchar ();}x *= f;
}
template <typename T, typename... Args>
void read (T &x, Args&... args) {read (x); read (args...);
}
char For_Print[25];
template <typename T>
void write (T x) {if (x == 0) { putchar ('0'); return; }if (x < 0) { putchar ('-'); x = -x; }int poi = 0;while (x) {For_Print[++poi] = x % 10 + '0';x /= 10;}while (poi) putchar (For_Print[poi--]);
}
template <typename T>
void print (T x, char ch) {write (x); putchar (ch);
}const LL Mod = 1e9 + 7;LL square (LL x) { return (x * x) % Mod; }
void DEL (LL &x, LL y) { ((x -= y) < 0) && (x += Mod); }
void ADD (LL &x, LL y) { ((x += y) >= Mod) && (x -= Mod); }const int Maxn = 1e5;int t, n, k;vector <int> d[Maxn + 5];
void Euler () {rep (i, 1, Maxn)for (int j = i; j <= Maxn; j += i)d[j].push_back (i);
}struct Fold {int n;LL f[Maxn + 5];Fold () { n = 0; memset (f, 0, sizeof f); f[1] = 1; }
};
Fold operator * (Fold x, Fold y) {Fold res; res.n = x.n; res.f[1] = 0;rep (i, 1, res.n)for (auto j : d[i])ADD (res.f[i], x.f[j] * y.f[i / j] % Mod);return res;
}
Fold quick_pow (Fold x, int y) {Fold res; res.n = x.n;while (y) {if (y & 1) res = res * x;x = x * x; y >>= 1;}return res;
}int main () {// freopen ("D:\\lihan\\1.in", "r", stdin);// freopen ("D:\\lihan\\1.out", "w", stdout);Euler ();read (t);while (t--) {read (n, k);Fold f, tmp; f.n = tmp.n = n;rep (i, 1, n) read (f.f[i]);rep (i, 1, n) tmp.f[i] = 1;f = f * quick_pow (tmp, k);rep (i, 1, n) {print (f.f[i], ' ');}putchar ('\n');}return 0;
}

二、BashPlayswithFunctionsBash \ Plays \ with \ FunctionsBash Plays with Functions

fr(n)=∑u⋅v=nfr−1u+fr−1v2=∑u∣nfr−1u=∑u∣nfr−1u⋅1(nu)\begin{aligned} f_r(n) &= \sum_{u \cdot v = n} \frac{f_{r - 1} u + f_{r - 1} v}{2} \\ &= \sum_{u \mid n} f_{r - 1} u \\ &= \sum_{u \mid n} f_{r - 1} u \cdot 1 (\frac{n}{u}) \end{aligned} fr​(n)​=u⋅v=n∑​2fr−1​u+fr−1​v​=u∣n∑​fr−1​u=u∣n∑​fr−1​u⋅1(un​)​

证明 fr(n)f_r(n)fr​(n) 是一个积性函数。

归纳法,假设 fr−1(n)f_{r - 1}(n)fr−1​(n) 是一个积性函数。

则:

∵fr−1(n),1(n)\because f_{r - 1}(n),1 (n)∵fr−1​(n),1(n) 是积性函数。
∴fr(n)\therefore f_r (n)∴fr​(n) 是积性函数。

又因为 f0(n)=2k(n=∏ikpiqi)f_0(n) = 2^k(n = \prod_{i}^{k} p_i^{q_i})f0​(n)=2k(n=∏ik​piqi​​) 是积性函数。

得证。

fr(pk)=∑i=0kfr−1(pi)f_r(p^k) = \sum_{i = 0}^k f_{r - 1}(p^i)fr​(pk)=∑i=0k​fr−1​(pi)
f0(pk)=2f_0(p^k) = 2f0​(pk)=2

我们观察到一个性质: fr(pk)f_r(p^k)fr​(pk) 的取值只与 k,rk,rk,r 有关。

所以我们可以先跑一遍,预处理出 r=0r = 0r=0 ~ 1e61e61e6, k=0k = 0k=0 ~ log2(1e6)log_2 (1e6)log2​(1e6) 时,fr(pk)f_r (p^k)fr​(pk) 的取值。

然后求 fr(n)f_r(n)fr​(n) 时就质因数分解,乘起来就好了。

//author : LH ——Who just can eat S??t
//worship WJC ——Who can f??k tourist up and down and loves 周歆恬
//worship YJX ——Who can f??k WJC up and down
#include <cmath>
#include <queue>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define fi first
#define se second
#define db double
#define LL long long
#define ULL unsigned long long
#define PII pair <int, int>
#define MP(x,y) make_pair (x, y)
#define rep(i,j,k) for (int i = (j); i <= (k); ++i)
#define per(i,j,k) for (int i = (j); i >= (k); --i)template <typename T> T Max (T x, T y) { return x > y ? x : y; }
template <typename T> T Min (T x, T y) { return x < y ? x : y; }
template <typename T> T Abs (T x) { return x > 0 ? x : -x; }
template <typename T>
void read (T &x) {x = 0; T f = 1;char ch = getchar ();while (ch < '0' || ch > '9') {if (ch == '-') f = -1;ch = getchar ();}while (ch >= '0' && ch <= '9') {x = (x << 3) + (x << 1) + ch - '0';ch = getchar ();}x *= f;
}
template <typename T, typename... Args>
void read (T &x, Args&... args) {read (x); read (args...);
}
char For_Print[25];
template <typename T>
void write (T x) {if (x == 0) { putchar ('0'); return; }if (x < 0) { putchar ('-'); x = -x; }int poi = 0;while (x) {For_Print[++poi] = x % 10 + '0';x /= 10;}while (poi) putchar (For_Print[poi--]);
}
template <typename T>
void print (T x, char ch) {write (x); putchar (ch);
}const LL Mod = 1e9 + 7;LL square (LL x) { return (x * x) % Mod; }
void DEL (LL &x, LL y) { ((x -= y) < 0) && (x += Mod); }
void ADD (LL &x, LL y) { ((x += y) >= Mod) && (x -= Mod); }const int Maxn = 1e6;
const int Maxk = 20;int q, op, n;int cnt, primes[Maxn + 5];
int num[Maxn + 5], px[Maxn + 5];
bool vis[Maxn + 5];
void Euler () {rep (i, 2, Maxn) {if (vis[i] == 0) {num[i] = 1;px[i] = i;primes[++cnt] = i;}rep (j, 1, cnt) {if (primes[j] > Maxn / i) break;vis[primes[j] * i] = 1;px[i * primes[j]] = primes[j];if (i % primes[j] == 0) {num[i * primes[j]] = num[i];break;}num[i * primes[j]] = num[i] + 1;}}
}
LL f[Maxn + 5][Maxk + 5];
void Init () {f[0][0] = 1; rep (j, 1, Maxk) f[0][j] = 2;rep (i, 1, Maxn) {f[i][0] = 1;rep (j, 1, Maxk)f[i][j] = (f[i][j - 1] + f[i - 1][j]) % Mod;}
}int main () {//freopen ("D:\\lihan\\1.in", "r", stdin);//freopen ("D:\\lihan\\1.out", "w", stdout);Euler ();Init ();read (q);while (q--) {read (op, n);if (op == 0) {print (1ll << num[n], '\n');}else {LL res = 1;while (n != 1) {int p = px[n], q = 0;while (n % p == 0) {q++;n /= p;}res = res * f[op][q] % Mod;}print (res, '\n');}}return 0;
}

【学习笔记】狄利克雷卷积相关推荐

  1. 霹雳吧啦wz学习笔记1_卷积神经网络

    霹雳吧啦wz学习笔记1_卷积神经网络 全连接层: 全连接层就是由许许多多的神经元共同连接而得来的 卷积层: 卷积就是一个滑动窗口在我们的特征图上进行滑动并计算 卷积的目的:进行图像特征提取 卷积核的c ...

  2. 深度学习笔记:卷积神经网络的可视化--卷积核本征模式

    目录 1. 前言 2. 代码实验 2.1 加载模型 2.2 构造返回中间层激活输出的模型 2.3 目标函数 2.4 通过随机梯度上升最大化损失 2.5 生成滤波器模式可视化图像 2.6 将多维数组变换 ...

  3. 深度学习入门之PyTorch学习笔记:卷积神经网络

    深度学习入门之PyTorch学习笔记 绪论 1 深度学习介绍 2 深度学习框架 3 多层全连接网络 4 卷积神经网络 4.1 主要任务及起源 4.2 卷积神经网络的原理和结构 4.2.1 卷积层 1. ...

  4. 深度学习笔记:卷积神经网络的Tensorflow实现

    文章出处:深度学习笔记11:利用numpy搭建一个卷积神经网络 免费视频课程:Hellobi Live | 从数据分析师到机器学习(深度学习)工程师的进阶之路 在上一讲中,我们学习了如何利用 nump ...

  5. [傅里叶变换及其应用学习笔记] 十. 卷积与中心极限定理

    这份是本人的学习笔记,课程为网易公开课上的斯坦福大学公开课:傅里叶变换及其应用. 中心极限定理(Central Limit Theorem) 中心极限定理,简称CLT.大多数概率事件,当有足够多的取样 ...

  6. [TensorFlow 学习笔记-04]卷积函数之tf.nn.conv2d

    [版权说明] TensorFlow 学习笔记参考: 李嘉璇 著 TensorFlow技术解析与实战 黄文坚 唐源 著 TensorFlow实战郑泽宇  顾思宇 著 TensorFlow实战Google ...

  7. 吴恩达深度学习笔记- lesson4 卷积神经网络

    文章目录 Week 1 卷积神经网络基础 4.1.1 计算机视觉(Computer vision) 4.1.2 边缘检测示例(Edge detection example) 4.1.3 更多边缘检测内 ...

  8. 深度学习笔记----三维卷积及其应用(3DCNN,PointNet,3D U-Net)

    目录 1.什么是三维卷积 1.1 三维卷积简介 1.2 三维卷积的工作原理 2,三维卷积核多通道卷积的区别 2.1 多通道卷积 2.2 三维卷积和多通道卷积之间的区别 2.3 总结 3,三维卷积的应用 ...

  9. 学习笔记 | 深度卷积神经网络在计算机视觉中的应用

    图像识别是一种利用计算机对图像进行处理.分析和理解,以识别各种不同模式的目标和对象的技术,是计算机视觉领域的一个主要研究方向,在以图像为主体的智能化数据采集与处理中具有十分重要 的作用和影响.目前图像 ...

  10. 深度学习笔记 6 卷积神经网络

    目录 1.概念 2. 结构及每层详解 3. CNN特征 4. 卷积神经网络的流程 5.可变形卷积(DCN) 6.一些小问题 1. 1x1卷积作用 2. 卷积层和池化层有什么区别? 3.怎样才能减少卷积 ...

最新文章

  1. 姚期智施尧耘获FOCS 2021时间检验奖,MIT华人摘最佳学生论文奖
  2. C++编译期多态与运行期多态
  3. CSS媒体查询 @media
  4. SAP顾问,市场的双重需求
  5. Java之品优购部署_day03(6)
  6. 技术干货 | 应用上线前的“体检”,你知道需要检测哪些指标吗?
  7. webservice 心得
  8. 梅宫主:聊聊创业路上关于韭菜的事儿。。
  9. 信息化建设规划_中小型企业信息化建设规划方案
  10. /etc/fstab文件 详解
  11. 联想服务器 硬盘支架 st,联想服务器硬盘阵列离线怎么解决
  12. 基于51单片机的万年历proteus仿真原理图方案设计
  13. java毕业设计项目基于JavaWeb酒店管理系统开发与设计
  14. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day14】—— 数据库3
  15. 学会使用debug模式调试代码
  16. 人工智能专业就业方向盘点
  17. [洛谷] P2357 守墓人
  18. 计算机字体渲染的学问
  19. c语言循环读文件程序,c语言读文件程序报告.docx
  20. 华为防火墙配置(防火墙基础)

热门文章

  1. 计算机词汇店名,电脑店名字200例
  2. 再度递表港交所,“快”能否成为绿茶餐厅突围的筹码?
  3. Unity人物模型编辑器,自定义人物模型在线设计。
  4. A股-入门-融资融券介绍及操作技巧
  5. 互联网已到中年,下一个产业革命是?
  6. 用前端代码编写一个动态的罗盘时钟
  7. springboot+微信小程序“微印象”在线打印预约系统的设计与实现毕业设计源码061642
  8. 为什么机器学习之路没有捷径可走
  9. vscode vuejs项目import报错找不到模块“@/assets/image/BackGroun.png”或其相应的类型声明。
  10. 东京丛林 扮演动物的游戏