tsy’s number

推式子

∑i=1n∑j=1n∑k=1nϕ(i)ϕ(j2)ϕ(k3)ϕ(i)ϕ(j)ϕ(k)ϕ(gcd(i,j,k))我们假定j=p1k1p2k2p3p3……pnkn,有ϕ(j)=p1k1−1(p1−1)p2k2−1(p2−1)p3k3−1(p3−1)……pnkn−1(pn−1),ϕ(j2)=p12k1−1(p1−1)p22k2−1(p2−1)p32k3−1(p3−1)……pn2kn−1(pn−1)ϕ(j2)ϕ(j)=p1k1p2k2p3p3……pnkn=j同样的,我们不难推出ϕ(k3)ϕ(k)=k2对上式化简:=∑i=1n∑j=1n∑k=1njk2ϕ(gcd(i,j,k))=∑d=1n∑i=1n∑j=1n∑k=1njk2ϕ(d)(gcd(i,j,k)=d)=∑d=1nd3ϕ(d)∑i=1nd∑j=1nd∑k=1ndjk2(gcd(i,j,k)=1)=∑d=1nd3ϕ(d)∑t=1ndμ(t)t3∑i=1ndt∑j=1ndt∑k=1ndtjk2设f(n)=∑i=1n∑j=1n∑k=1njk2,T=dt,再次对上式化简:=∑T=1nf(nT)T3∑d∣Tϕ(d)μ(Td)我们假设g(n)=n3∑d∣nϕ(d)μ(nd)\sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \sum_{k = 1} ^{n} \frac{\phi(i) \phi(j ^ 2) \phi(k ^ 3)}{ \phi(i) \phi(j) \phi(k)}\phi(gcd(i, j, k))\\ 我们假定j = p_1 ^{k_1}p_2^{k_2}p_3 ^{p_3} ……p_n ^{k_n},有\phi(j) = p_1^{k_1 - 1}(p_1 - 1)p_2 ^{k_2 - 1}(p_2 - 1)p_3^{k_3 - 1}(p_3 - 1) …… p_n ^{k_n - 1}(p_n - 1),\\ \phi(j ^ 2) = p_1^{2k_1 - 1}(p_1 - 1)p_2 ^{2k_2 - 1}(p_2 - 1)p_3^{2k_3 - 1}(p_3 - 1) …… p_n ^{2k_n - 1}(p_n - 1)\\ \frac{\phi(j ^ 2)}{\phi(j)} = p_1 ^{k_1}p_2^{k_2}p_3 ^{p_3} ……p_n ^{k_n} = j\\ 同样的,我们不难推出\frac{\phi(k ^ 3)}{\phi(k)} = k ^ 2\\ 对上式化简:\\ = \sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \sum_{k = 1} ^{n} jk ^ 2 \phi(gcd(i, j, k))\\ = \sum_{d = 1} ^{n} \sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \sum_{k = 1} ^{n} jk ^ 2 \phi(d)(gcd(i, j, k) = d)\\ = \sum_{d = 1} ^{n} d ^ 3 \phi(d) \sum_{i = 1} ^{\frac{n}{d}} \sum_{j = 1} ^{\frac{n}{d}} \sum_{k = 1} ^{\frac{n}{d}}jk ^ 2 (gcd(i, j, k) = 1)\\ = \sum_{d = 1} ^{n} d ^ 3 \phi(d) \sum_{t = 1} ^{\frac{n}{d}} \mu(t) t ^ 3 \sum_{i = 1} ^{\frac{n}{dt}} \sum_{j = 1} ^{\frac{n}{dt}} \sum_{k = 1} ^{\frac{n}{dt}}j k ^ 2\\ 设f(n) = \sum \limits _{i = 1} ^{n} \sum\limits_{j = 1} ^{n} \sum\limits_{k = 1} ^{n} j k ^ 2,T = dt,再次对上式化简:\\ = \sum_{T = 1} ^{n} f(\frac{n}{T}) T ^ 3 \sum_{d \mid T} \phi(d) \mu(\frac{T}{d})\\ 我们假设g(n) = n ^ 3 \sum_{d \mid n} \phi(d) \mu(\frac{n}{d})\\ i=1∑n​j=1∑n​k=1∑n​ϕ(i)ϕ(j)ϕ(k)ϕ(i)ϕ(j2)ϕ(k3)​ϕ(gcd(i,j,k))我们假定j=p1k1​​p2k2​​p3p3​​……pnkn​​,有ϕ(j)=p1k1​−1​(p1​−1)p2k2​−1​(p2​−1)p3k3​−1​(p3​−1)……pnkn​−1​(pn​−1),ϕ(j2)=p12k1​−1​(p1​−1)p22k2​−1​(p2​−1)p32k3​−1​(p3​−1)……pn2kn​−1​(pn​−1)ϕ(j)ϕ(j2)​=p1k1​​p2k2​​p3p3​​……pnkn​​=j同样的,我们不难推出ϕ(k)ϕ(k3)​=k2对上式化简:=i=1∑n​j=1∑n​k=1∑n​jk2ϕ(gcd(i,j,k))=d=1∑n​i=1∑n​j=1∑n​k=1∑n​jk2ϕ(d)(gcd(i,j,k)=d)=d=1∑n​d3ϕ(d)i=1∑dn​​j=1∑dn​​k=1∑dn​​jk2(gcd(i,j,k)=1)=d=1∑n​d3ϕ(d)t=1∑dn​​μ(t)t3i=1∑dtn​​j=1∑dtn​​k=1∑dtn​​jk2设f(n)=i=1∑n​j=1∑n​k=1∑n​jk2,T=dt,再次对上式化简:=T=1∑n​f(Tn​)T3d∣T∑​ϕ(d)μ(dT​)我们假设g(n)=n3d∣n∑​ϕ(d)μ(dn​)

显然n3是较好解决的,所以我们考虑后面的式子∑d∣nϕ(d)μ(nd)写成迪利克雷卷积的形式g(n)=(ϕ∗μ)(n),显然g(n)是一个积性函数n=1,g(1)=ϕ(1)μ(1)=1n=p,g(p)=ϕ(1)μ(p)+ϕ(p)μ(1)=1∗(−1)+(p−1)∗1=p−2n=pkd,由于pk与d互质,所以有g(n)=g(pk)g(d)所以我们重点考虑如何求g(pk)g(pk)=∑i=0kϕ(pi)μ(pk−i)=∑i=0kϕ(pk−i)μ(pi)显然对于i≥2时μ(pi)=0,所以g(pk)=∑i=01ϕ(pk−i)μ(pi)=ϕ(pk)−ϕ(pk−1)这里预处理就结束了,接下来就能快乐的数论分块了。显然n ^ 3是较好解决的,所以我们考虑后面的式子\sum_{d \mid n} \phi(d) \mu(\frac{n}{d})\\ 写成迪利克雷卷积的形式g(n) = (\phi * \mu)(n),显然g(n)是一个积性函数\\ n = 1, g(1) = \phi(1)\mu(1) = 1\\ n = p, g(p) = \phi(1)\mu(p) + \phi(p) \mu(1) = 1 * (-1) + (p - 1) * 1 = p - 2\\ n = p ^ k d,由于p ^ k与d互质,所以有g(n) = g(p ^ k) g(d)\\所以我们重点考虑如何求g(p ^ k)\\ g(p ^ k) = \sum_{i = 0} ^{k} \phi(p ^ i)\mu(p ^ {k - i})\\ = \sum_{i = 0} ^{k} \phi(p ^ {k - i})\mu(p ^ i)\\ 显然对于i \geq 2时\mu(p ^ i) = 0,所以\\ g(p ^ k) = \sum_{i = 0} ^{1} \phi(p ^ {k - i}) \mu(p ^ i) = \phi(p ^ k) - \phi(p ^ {k - 1})\\ 这里预处理就结束了,接下来就能快乐的数论分块了。 显然n3是较好解决的,所以我们考虑后面的式子d∣n∑​ϕ(d)μ(dn​)写成迪利克雷卷积的形式g(n)=(ϕ∗μ)(n),显然g(n)是一个积性函数n=1,g(1)=ϕ(1)μ(1)=1n=p,g(p)=ϕ(1)μ(p)+ϕ(p)μ(1)=1∗(−1)+(p−1)∗1=p−2n=pkd,由于pk与d互质,所以有g(n)=g(pk)g(d)所以我们重点考虑如何求g(pk)g(pk)=i=0∑k​ϕ(pi)μ(pk−i)=i=0∑k​ϕ(pk−i)μ(pi)显然对于i≥2时μ(pi)=0,所以g(pk)=i=0∑1​ϕ(pk−i)μ(pi)=ϕ(pk)−ϕ(pk−1)这里预处理就结束了,接下来就能快乐的数论分块了。

代码

/*Author : lifehappy
*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>#define mp make_pair
#define pb push_back
#define endl '\n'
#define mid (l + r >> 1)
#define lson rt << 1, l, mid
#define rson rt << 1 | 1, mid + 1, r
#define ls rt << 1
#define rs rt << 1 | 1using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;const double pi = acos(-1.0);
const double eps = 1e-7;
const int inf = 0x3f3f3f3f;inline ll read() {ll f = 1, x = 0;char c = getchar();while(c < '0' || c > '9') {if(c == '-')    f = -1;c = getchar();}while(c >= '0' && c <= '9') {x = (x << 1) + (x << 3) + (c ^ 48);c = getchar();}return f * x;
}const int N = 1e7 + 10, mod = 1 << 30, inv3 = 715827883;int prime[N], cnt;ll f[N], g[N], n;bool st[N];ll quick_pow(ll a, int n) {ll ans = 1;while(n) {if(n & 1) ans = ans * a % mod;a = a * a % mod;n >>= 1;}return ans;
}void init() {g[1] = 1;for(int i = 2; i < N; i++) {if(!st[i]) {prime[cnt++] = i;g[i] = i - 2;}for(int j = 0; j < cnt && i * prime[j] < N; j++) {st[i * prime[j]] = 1;if(i % prime[j] == 0) {int num = 1, temp = i;while(temp % prime[j] == 0) {temp /= prime[j], num++;}g[i * prime[j]] = quick_pow(prime[j], num - 2) * ((1ll * prime[j] * prime[j] % mod - 2 * prime[j] % mod + 1 + mod) % mod) % mod * g[temp] % mod;break;}g[i * prime[j]] = g[i] * g[prime[j]];}}for(int i = 1; i < N; i++) {f[i] = ((1ll * i * (1 + i) / 2 % mod) * i % mod) * ((1ll * (i + 1) * i / 2) % mod * (2 * i + 1) % mod * inv3 % mod) % mod;g[i] = (1ll * i * i % mod * i % mod * g[i] % mod + g[i - 1]) % mod;}
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);init();int T = read();while(T--) {n = read();ll ans = 0;for(ll l = 1, r; l <= n; l = r + 1) {r = n / (n / l);ans = (ans + 1ll * f[n / l] * ((g[r] - g[l - 1] + mod) % mod) % mod) % mod;}printf("%lld\n", ans);}return 0;
}

2019南昌网络赛G. tsy‘s number(反演 + 积性函数O(n)预处理)相关推荐

  1. 南昌邀请赛网络赛 G. tsy's number(莫比乌斯反演+线性筛)

    题目链接: tsy's number 题意: 求    (mod ) 思路: 原式 =  设   设  原式 =  设T = id ,将 i 的求和变为 T 的求和: 原式 =   :这个是 与  的 ...

  2. 2019徐州网络赛G

    2019徐州网络赛G 题意 给定s字符串,定义一个回文串的价值是这个回文串中不同字母的个数,求s中所有回文串的价值之和. 思路 马拉车加序列自动机. 代码 #include<bits/stdc+ ...

  3. 2019南昌网络赛 C题,Hello 2019

    题意:求包含9012,但是不包含8012的最小删除次数 解题思路:首先将字符串反转,按照题解思路为线段树维护矩阵即可 我们将线段树的每个区间用矩阵表示,矩阵mat[5][5]维护2019这个序列的情况 ...

  4. 2019南昌网络赛  I. Yukino With Subinterval 树状数组套线段树

    I. Yukino With Subinterval 题目链接: Problem Descripe Yukino has an array \(a_1, a_2 \cdots a_n\). As a ...

  5. 2019 南昌网络赛D FFT多个多项式相乘

    2019 Asia Nanchang D. Interesting Series 链接:https://nanti.jisuanke.com/t/41351 题意:首先题目给了若干定义 定义:Fn=( ...

  6. 2019南昌网络赛-I(单调栈+线段树)

    题目链接:https://nanti.jisuanke.com/t/38228 题意:定义一段区间的值为该区间的和×该区间的最小值,求给定数组的最大的区间值. 思路:比赛时还不会线段树,和队友在这题上 ...

  7. 2019南昌网络赛 H. The Nth Item(广义斐波那契数列求通项公式模板)(二次剩余+分块)

    链接:https://nanti.jisuanke.com/t/41355 题意: Q个询问,每次求F(N),但是N要用上一次询问的结果得到. 思路: 1.直接矩阵快速幂求,再用map记一下答案,求过 ...

  8. 2019徐州网络赛 G Colorful String 马拉车+后缀

    题目链接:https://nanti.jisuanke.com/t/41389 题解:马拉车处理回文串,每个位置记录后面每个字符出现的第一个位置,然后把每种字符额贡献加起来即可 #include< ...

  9. 2019南昌网络赛 Yukino With Subinterval —— 树套树 或 cbq分治

    题目链接:点我啊╭(╯^╰)╮ 评测机好像换了,没有当初那么卡了... 最快写法: #include<bits/stdc++.h> #define rint register int #d ...

最新文章

  1. ×××S:Reporting Services 技巧
  2. 45种可以拿到Webshell的程序
  3. Kettle使用_4 Excel批量数据输入
  4. ios 动画设计_动画和讲故事在设计中的力量
  5. Qt之QThread用法
  6. Hash表、Hash函数及冲突解决
  7. 【转】和菜鸟一起学linux之DBUS基础学习记录
  8. 螃蟹保存方法保存时间_螃蟹吃不完怎么保存?学会这4招,不论是海蟹、河蟹通通都不愁...
  9. ubuntu安装及使用笔记
  10. 后台api接口幂等防止数据篡改,看完发现心领神会
  11. 少数民族高考成绩查询2021,2021少数民族高考加多少分?
  12. Chinese NER Using Lattice LSTM 论文解读
  13. 使用windows Server 2003搭建DHCP服务器
  14. ROS学习笔记08、机器人导航仿真(slam、map_server、amcl、move_base与导航消息介绍)
  15. 解决SAP业务问题的思考——逆向思维
  16. C标签的核心标签及语法格式
  17. Mal-PEG1-acid,Mal-PEG1-COOH,760952-64-5含有马来酰亚胺基团
  18. 爬虫踩坑系列——etree.HTML解析异常
  19. 【Atlas200】使用华为ACL库实现ResNet 推理(C++版本)
  20. winform手绘Step步骤进度节点线条图

热门文章

  1. config kubectl_Kubernetes(k8s)中文文档 kubectl config set-context_Kubernetes中文社区
  2. php fpm工作原理,什么是phpfpm的工作原理?
  3. java 矩阵题目_java练习本(原每日一练)(20190517)
  4. 三联《少年》创刊,各领域佼佼者畅言新知,帮少年建立思维素养体系!
  5. 物理学上最厉害的54个男人!2400年来难以超越,没想到聚在一起后这么震撼......
  6. 我怀疑全国最会吹牛的人,都在这8个公众号上了
  7. 分布式之数据库和缓存双写一致性方案解析!
  8. 通过简单的Word Count讲解MapReduce原理以及Java实现
  9. mysql 5.5.46_MySQL 5.5.46源码安装
  10. 电脑home键在哪_如何灵活使用电脑键盘上的各个键