题目链接 哇杜教筛超炫的 有没有见过$O(n^\frac{2}{3})$求欧拉函数前缀和的算法?没有吧?蛤蛤蛤 首先我们来看狄利克雷卷积是什么 首先我们把定义域是整数,陪域是复数的函数叫做数论函数. 然后狄利克雷卷积是个函数和函数的运算. 比如说有两个数论函数f,g 那么它们的狄利克雷卷积就是f*g,记为h 然后我们惊奇地发现$h(i)=\sum\limits_{d|i}f(d)g(\frac{i}{d})$ 而且狄利克雷卷积好像是个群,然后它就能满足交换律结合律分配律balaba 那么这个玩意…
ssplaysecond的博客(请使用VPN访问): 中国剩余定理: https://ssplaysecond.blogspot.jp/2017/04/blog-post_6.html 欧拉函数: https://ssplaysecond.blogspot.jp/2017/04/blog-post_8.html 莫比乌斯反演 https://ssplaysecond.blogspot.jp/2017/04/blog-post_91.html 狄利克雷卷积与杜教筛 https://ssplayse…
BZOJ3944: Sum(杜教筛模板) 题面描述 传送门 题目分析 求\(\sum_{i=1}^{n}\mu(i)\)和\(\sum_{i=1}^{n}\varphi(i)\) 数据范围线性不可做. 需要使用杜教筛. 杜教筛可以在非线性时间里求出一个积性函数的前缀和. 借这里先写一些杜教筛内容...或许以后会补总结(雾 最开始扔积性函数: \(\mu(n)\),莫比乌斯函数 \(\phi(n)\),欧拉函数. \(d(n)\),约数个数. \(\sigma(n)\),约数和函数. \(\eps…
根据狄利克雷卷积的性质,可以在低于线性时间复杂度的情况下,求积性函数前缀和 公式 \[ 求\sum_{i=1}^{n}\mu(i) \] 因为\(\mu*I=\epsilon\) 所以设\(h=\mu*I,S_n=\sum_{i=1}^n\mu(i)\) \[ \sum_{i=1}^{n}h(i)\] \[=\sum_{i=1}^{n}\sum_{d|i}\mu(\lfloor\frac{i}{d}\rfloor)\times I(d)\] \[=\sum_{i=1}^nI(i)\sum_{j=…
狄利克雷卷积&莫比乌斯反演总结 Prepare 1.\([P]\)表示当\(P\)为真时\([P]\)为\(1\),否则为\(0\). 2.\(a|b\)指\(b\)被\(a\)整除. 3.一些奇怪常见的函数: \(1(n)=1\) \(id(n)=n\) \(\sigma(n)=n的约数和\) \(d(n)=n的约数个数\) \(\epsilon(n)=[n==1]\) 狄利克雷卷积 数论函数 数论函数指一类定义域是正整数,值域是一个数集的函数. 加法:逐项相加就可以辣\((f+g)(x)=f…
\(Description\) \[g(i)=\sum_{i_1|i}\sum_{i_2|i_1}\sum_{i_3|i_2}\cdots\sum_{i_k|i_{k-1}}f(i_k)\ mod\ 1000000007\] 给出\(n,k,f[1\sim n]\),求\(g[1\sim n]\). \(Solution\) 首先狄利克雷卷积(Dirichlet Product):设\(f(n),g(n)\)是两个数论函数,它们的Dirichlet乘积也是一个数论函数, \[h(n)=\sum_…
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3601 题解 首先还是基本的推式子: \[\begin{aligned}f_d(n) &= \sum_{i = 1}^n [{\rm gcd}(i, n) = 1]i^d \\ &= \sum_{i = 1}^n i^d \sum_{k | i, k | n}\mu(k) \\ &= \sum_{k | n} \mu(k) \sum_{k | i} i^d \\ &…
http://codeforces.com/contest/757/problem/E 题意 Sol 非常骚的一道题 首先把给的式子化一下,设$u = d$,那么$v = n / d$ $$f_r(n) = \sum_{d \mid n} \frac{f_{r - 1}(d) + f_{r - 1}(\frac{n}{d})}{2}$$ $$= \sum_{d\mid n} f_{r - 1}(d)$$ 很显然,这是$f_r(n)$与$1$的狄利克雷卷积 根据归纳法可以证明$f_r(n)$为积性…
狄利克雷卷积简介 卷积这名字听起来挺学究的,今天学了之后发现其实挺朴实hhh. 卷积: "(n)"表示到n的一个范围. 设\(f,g\)是两个数论函数(也就是说,以自然数集为定义域的复数值函数),则卷积运算\(f\ast g\)定义为 \[(f\ast g)(n) = \sum_{ij=n}{f(i)g(j)}\] 另一种写法就是: \[(f\ast g)(n) = \sum_{d\mid n}{f(d)g(\frac{n}{d})}\] 这里给一段数论函数的定义: 数论函数亦称算术函…
积性函数与完全积性函数 积性函数 若一个数论函数\(f\)满足当\(gcd(n,m)=1\)时,\(f(nm)=f(n)f(m)\) 则称\(f\)为积性函数 一些常见的积性函数 完全积性函数 若一个积性函数函数\(f\)满足当\(gcd(n,m)\ne1\)时,也有\(f(nm)=f(n)f(m)\) 则称\(f\)为完全积性函数 狄利克雷卷积 定义两个数论函数的狄利克雷卷积\(*\) 若\(t=f*g\) \[t(n)=\sum\limits_{i|n}f(i)g(\frac{n}{i})…
我们一般写的埃氏筛消耗的时间都是欧拉筛的三倍,但是欧拉筛并不好想(对于我这种蒟蒻) 虽然 -- 我 -- 也可以背过模板,但是写个不会的欧拉筛不如写个简单易懂的埃氏筛 于是就有了优化 这个优化还是比较厉害的,能把埃氏筛的消耗的时间提的跟欧拉筛差不多 以下内容需要先学会埃氏筛 学会的埃氏筛就明白它的原理了吧 #include<bits/stdc++.h> using namespace std; int n, m ,Is_p[10000001]; int main() { cin >>…
题面: 传送门 就是让你求$ \varphi\left(i\right) $以及$ \mu\left(i\right) $的前缀和 思路: 就是杜教筛的模板 我们把套路公式拿出来: $ g\left(1\right)S\left(n\right)=\sum_{i=1}^{n}\left(g\ast f\right)\left(i\right)-\sum_{i=2}^{n}g\left(i\right)S\left(\frac ni\right) $ 其中函数$f$分别为$\varphi$以及$\…
传送门 不会…… 两篇加在一起都看不懂…… https://www.cnblogs.com/cellular-automaton/p/8241128.html https://www.luogu.org/blog/cjyyb/solution-p3768 //minamoto #include<iostream> #include<cstdio> #include<map> #define ll long long using namespace std; ; map&…
Dirichlet 卷积是两个定义域在正整数上的函数的如下运算,符号为 $*$ $(f * g)(n) = \sum_{d|n}f(d)g(\frac{n}{d})$ 如果不强调 $n$ 可简写为 $f * g$ 常用: $\mu * 1 = \epsilon$ $\phi * 1 = id$ $\epsilon(n) = [n=1]$ $id(n)=n$ Mobius 反演是基于 Dirichlet 卷积的一种....化简式子的方法? 比较有用的结论就是 $\mu * 1 = [n=1]$ 由…
bzoj3944 题目描述 输入 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询问 输出 一共T行,每行两个用空格分隔的数ans1,ans2 样例输入 6 1 2 8 13 30 2333 样例输出 1 1 2 0 22 -2 58 -3 278 -3 1655470 2 bzoj4805 同上,不需要求mu 题解 杜教筛 公式推导: 这里有一个难点(其实也不能算难),就是由枚举d|i到枚举j≤⌊n/i⌋.此时可以看作下面语句的i是上面语句的i/d,…
[BZOJ3944]Sum Description Input 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询问 Output 一共T行,每行两个用空格分隔的数ans1,ans2 Sample Input 6 1 2 8 13 30 2333 Sample Output 1 1 2 0 22 -2 58 -3 278 -3 1655470 2 题解: 当i等于1时就是答案,剩余的部分递归算下去就行了(先预处理出1000000以内的答案,其余的答案要用…
传送门 坑着,联赛活着回来再填(死了就不填了) // luogu-judger-enable-o2 //minamoto #include<iostream> #include<cstdio> #include<map> #define ll long long using namespace std; ,M=4e6+,limit=; map<ll,ll> _mu; map<ll,ll>::iterator ii; ll p[M],m,mu[M]…
#include<bits/stdc++.h> using namespace std; #define rep(i,a,n) for (int i=a;i<n;i++) #define per(i,a,n) for (int i=n-1;i>=a;i--) #define pb push_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define se second…
昨天刚说完不搞数论了,刚看到一个\(gcd\)的题目dalao用这个做了,虽然比正解麻烦,还是打算学一学了 数论函数: 数论函数的定义: 数论函数亦称算术函数,一类重要的函数,指定义在正整数集上的实值或复值函数,更一般地,也可把数论函数看做是某一整数集上定义的函数 常见积性函数 \(\mu(n)\) \(~~~~~~~~n=1:\mu(n)=1\),\(n=\prod\limits_{i=1}^k p_i:\mu(n)=(-1)^k\),\(d\)有任何质因子幂次大于等于\(2:\mu(n)=0…
思路: 如果我们要筛出 [1, n] 内的所有素数,使用 [1, √n] 内的素数去筛就可以了 设bool型数组 a,a[i] 表示 i 是否被某个素数筛过 从 2 开始枚举每个数 i: 若 a[i] = false,表示 i 没有更小的素因子,从而知道 i 是素数.枚举 i 的所有倍数 j,令 a[j] = 1 这样就可以在线性复杂度内预处理出比较大的区间的素数 代码如下: #include<cstdio> #include<iostream> using namespace s…
''' Created on 2017年4月22日 @author: weizhen ''' import tensorflow as tf #通过tf.get_variable的方式创建过滤器的权重变量和偏置变量,上面介绍了卷积层 #的参数个数只和过滤器的尺寸.深度以及当前层节点矩阵的深度有关,所以这里声明的参数变量 #是一个四维矩阵,前面两个维度代表了过滤器的尺寸,第三个维度表示了当前层的深度.第四个维度表示过滤器的深度 filter_weight=tf.get_variable('weig…
前言 现在生活节奏加快,人们之间交流方式也有了天差地别,为了更加便捷的交流沟通,电子邮件产生了,众所周知,电子邮件其实就是客户端和服务器端发送接受数据一样,他有一个发信和一个收信的功能,电子邮件的通信协议为SMTP ,POP3,IMAP,而且他们都属于tcp/ip协议,像我们经常用到的QQ邮箱,网易邮箱,这些都是同样的模式. 准备 编辑器:sublime text 3 模块:smtplib和email 项目实施 1.安装 pip install smtplib  pip install emai…
#include<iostream> #include<cmath> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; ,maxn=,p=,N=; ; ],pp[N+]; ll t[p],v[p],n; ]; void add(int x,ll y,ll z){++cnt;pre[cnt]=last[x…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6265 题目大意:首先T是测试组数,n代表当前这个数的因子的种类,然后接下来的p和q,代表当前这个数的因子中含有p的q次方.然后让你求题目第一行给你的信息. 首先理一下思路. 第一步,我们需要算题目中要求的公式(第一行),首先,他是一个积性函数,所以我们先将题目中的第一行的式子命名为F(n).对于F(n),我们可以分着求他的每一个因子的解,然后最终将这一写乘起来就可以了. F(n) = F(p1^q1…
HDU - 2824 题意: 求[a,b]间的欧拉函数和.这道题卡内存,只能开一个数组. 思路: ϕ(n) = n * (p-1)/p * ... 可利用线性筛法求出所有ϕ(n) . #include <algorithm> #include <iterator> #include <iostream> #include <cstring> #include <iomanip> #include <cstdlib> #include…
题意: 把n拆成k个不同素数的和,有多少种拆法. 解法: 打表后dp即可,这个dp的问题可以归纳为:在n个数中选k个数,使得和m的方案数 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; ]; ]; ][]; ; void generate_prim(int n) { memset(visit, true, sizeof(visit)); ; i <= n; ++…
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Numpy专题第6篇文章,我们一起来看看Numpy库当中剩余的部分. 数组的持久化 在我们做机器学习模型的研究或者是学习的时候,在完成了训练之后,有时候会希望能够将相应的参数保存下来.否则的话,如果是在Notebook当中,当Notebook关闭的时候,这些值就丢失了.一般的解决方案是将我们需要的值或者是数组"持久化",通常的做法是存储在磁盘上. Python当中读写文件稍稍有些麻烦,我们还需要创建文件句柄,然后一行行写…
先定义几个符号: []:若方括号内为一个值,则向下取整,否则为布尔判断 集合P:素数集合. 题目分析: 题目是一个积性函数.做法之一是洲阁筛,也可以采用Min_25筛. 对于一个可以进行Min_25筛法的积性函数,它需要满足与洲阁筛相同的条件,即: 对于$f(p), p \in P$,它可以多项式表出.对于$f(p^k),p \in P$可以被快速计算出. 这道题中$f(p) = p-1$再对$2$进行修正即可. 对于1的情况我们单独考虑,现在我们对答案进行一些变换. $$\sum_{i=2}^…
先看一道例题:[POI2007]Zap BZOJ 洛谷 题目大意:$T$ 组数据,求 $\sum^n_{i=1}\sum^m_{j=1}[gcd(i,j)=k]$ $1\leq T\leq 50000,1\leq k\leq n,m\leq 50000$ 暴力做法 $O(Tnm\log\max(n,m))$ 不用说了,那有没有什么更好的做法呢? 我们定义一种函数叫莫比乌斯函数 $\mu$,它的定义是: 当 $n=1$ 时,$\mu(n)=1$ 当 $n$ 可以分解成 $p_1p_2...p_k$…
正题 题目链接:https://www.luogu.com.cn/problem/P6222 题目大意 给出\(k\),\(T\)组询问给出\(n\)求 \[\sum_{i=1}^n\sum_{j=1}^n(i+j)^k\times gcd(i,j)\times \mu(gcd(i,j))^2 \] 解题思路 开始忘记了\(k\)次幂能线性筛后面全推错了,既然可以线性筛\(k\)次幂就把\(gcd(i,j)\)提到前面来. \[\sum_{d=1}^n\mu(d)^2d\sum_{i=1}^n\…