欧拉心算(反演 + 积性函数筛)

欧拉心算

推式子

∑i=1n∑j=1nϕ(gcd(i,j))=∑d=1nϕ(d)∑i=1nd∑j=1nd[gcd(i,j)==1]=∑d=1nϕ(d)∑k=1ndμ(k)(⌊nkd⌋)2另t=kd=∑t=1n(⌊nt⌋)2∑d∣tϕ(d)μ(td)另f(n)=∑d∣nϕ(d)μ(nd)我们考虑如何得到这个函数的前缀和,显然这是一个积性函数有如下性质f(1)=1f(p)=ϕ(1)μ(p)+ϕ(p)μ(1)=−1+p−1=p−2否则我们设n=pkt,p,t互质f(n)=f(pk)f(t)=(∑d∣pkμ(d)ϕ(pkd))f(t)=(∑i=0kμ(pk)ϕ(pk−i))f(t)=(μ(1)ϕ(pk)+μ(p)ϕ(pk−1))f(t)=(pk−2(p2−2p+1))f(t)由此我们得到了一个线性筛法,接下来数论分块即可。\sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \phi(gcd(i, j))\\ = \sum_{d = 1} ^{n} \phi(d) \sum_{i = 1} ^{\frac{n}{d}} \sum_{j = 1} ^{\frac{n}{d}} [gcd(i, j) == 1]\\ = \sum_{d = 1} ^{n} \phi(d) \sum_{k = 1} ^{\frac{n}{d}} \mu(k) (\lfloor \frac{n}{kd}\rfloor) ^2\\ 另t = kd\\ = \sum_{t = 1} ^{n} (\lfloor \frac{n}{t} \rfloor) ^ 2 \sum_{d \mid t} \phi(d) \mu(\frac{t}{d})\\ 另f(n) = \sum_{d \mid n} \phi(d) \mu(\frac{n}{d})\\ 我们考虑如何得到这个函数的前缀和,显然这是一个积性函数有如下性质\\ f(1) = 1\\ f(p) = \phi(1) \mu(p) + \phi(p) \mu(1) = -1 + p - 1 = p - 2\\ 否则我们设n = p ^ k t,p, t互质\\ f(n) = f(p ^ k) f(t) = (\sum_{d \mid p ^ k} \mu(d) \phi(\frac{p ^ k}{d}))f(t)\\ = (\sum_{i = 0} ^{k} \mu(p ^ k) \phi(p ^{k - i}))f(t)\\ = (\mu(1) \phi(p ^ k) + \mu(p) \phi(p ^{k - 1}))f(t)\\ = (p ^{k - 2} (p ^ 2 - 2p + 1))f(t)\\ 由此我们得到了一个线性筛法,接下来数论分块即可。 i=1nj=1nϕ(gcd(i,j))=d=1nϕ(d)i=1dnj=1dn[gcd(i,j)==1]=d=1nϕ(d)k=1dnμ(k)(kdn)2t=kd=t=1n(tn)2dtϕ(d)μ(dt)f(n)=dnϕ(d)μ(dn)f(1)=1f(p)=ϕ(1)μ(p)+ϕ(p)μ(1)=1+p1=p2n=pkt,p,tf(n)=f(pk)f(t)=(dpkμ(d)ϕ(dpk))f(t)=(i=0kμ(pk)ϕ(pki))f(t)=(μ(1)ϕ(pk)+μ(p)ϕ(pk1))f(t)=(pk2(p22p+1))f(t)线,

代码

bzoj挂了,所以没地方测试,所以只能在网上找了题解对拍了几组样例。

/*Author : lifehappy
*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int inf = 0x3f3f3f3f;const int N = 1e7 + 10;bool st[N];ll f[N], prime[N], cnt;ll quick_pow(ll a, int n) {ll ans = 1;while(n) {if(n & 1) ans = ans * a;a = a * a;n >>= 1;}return ans;
}void init() {st[1] = f[1] = 1;for(int i = 2; i < N; i++) {if(!st[i]) {prime[cnt++] = i;f[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++;}f[i * prime[j]] = 1ll * quick_pow(prime[j], num - 2) * (1ll * prime[j] * prime[j] - 2ll * prime[j] + 1) * f[temp];break;}f[i * prime[j]] = f[i] * f[prime[j]];}}for(int i = 1; i < N; i++) {f[i] += f[i - 1];}
}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;scanf("%d", &T);while(T--) {ll n, ans = 0;scanf("%lld", &n);for(ll l = 1, r; l <= n; l = r + 1) {r = n / (n / l);ans += (n / l) * (n / l) * (f[r] - f[l - 1]);}printf("%lld\n", ans);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对微软的敌视何时休? 从一篇语言评论文章对C#的评价说起

看到一篇公众号文章《2020年什么编程语言最受欢迎&#xff0c;待遇最高&#xff1f;》&#xff0c;其中对C#的描述如下&#xff1a;点击阅读原文&#xff0c;看到这是一篇翻译文章&#xff1a;https://codinginfinite.com/top-programming-languages-2020-stats-surveys/这篇文…

1 ~ n的k次方求和模板

∑i1nik\sum\limits_{i 1} ^{n} i ^ ki1∑n​ik /*Author : lifehappy */ #pragma GCC optimize(2) #pragma GCC optimize(3) #include <bits/stdc.h>using namespace std;typedef long long ll;const int inf 0x3f3f3f3f; const double eps 1e-7;const int N 1e6 …

ASP.NET Core on K8S深入学习(6)Health Check

本篇已加入《.NET Core on K8S学习实践系列文章索引》&#xff0c;可以点击查看更多容器化技术相关系列文章。预计阅读时间为10分钟。01—关于K8S中的健康监测所谓Health Check&#xff0c;就是健康检查&#xff0c;即防微杜渐。K8S是一个编排引擎可以帮助我们快捷地部署容器集…

Polynomial(2019南昌邀请赛)(拉格朗日插值)

Polynomial 思路 题目给的是一个nnn次多项式&#xff0c;要我们求∑ilr\sum\limits_{i l} ^{r}il∑r​&#xff0c;也就是一个累加的形式&#xff0c;容易想到转换成求前缀和。 所以我们考虑求前缀和&#xff0c;容易得到这个多项式的前缀和一定是≥n&≤n1\geq n \&…

P3356 火星探险问题(网络流)

P3356 火星探险问题 对于一个第一次经过会有价值&#xff0c;但是之后经过没有价值的点&#xff0c;我们的处理方法就是只连一条流量为1并且有费用的边&#xff0c;再连接流量为INF但是没有费用的边&#xff0c;这样我们要使得价值最大就会优先流有费用的边。

ASP.NET Core 使用 JWT 自定义角色/策略授权需要实现的接口

目录① 存储角色/用户所能访问的 API② 实现 IAuthorizationRequirement 接口③ 实现 TokenValidationParameters④ 生成 Token⑤ 实现服务注入和身份认证配置⑥ 实现登陆⑦ 添加 API 授权策略⑧ 实现自定义授权校验⑨ 一些有用的代码① 存储角色/用户所能访问的 API例如 使用 …

EOJ Monthly 2019.11 E. 数学题(反演 + 杜教筛 + 拉格朗日插值)

EOJ Monthly 2019.11 ∑i1n∑a11i∑a21i∑a31i⋯∑ak−1i∑aki[gcd(a1,a2,a3,…,ak−1,ak,i)1]∑i1n∑d∣iμ(d)⌊id⌋k∑d1nμ(d)∑d∣i⌊id⌋k∑d1nμ(d)∑t1ndtk\sum_{i 1} ^{n} \sum_{a_1 1} ^{i} \sum_{a_2 1} ^{i} \sum_{a_3 1} ^{i} \dots \sum_{a_{k - 1}} ^{i} \s…

打表

打表 众所周知&#xff0c;打表是一项非常非常重要的技能QAQ 寻找通项&#xff1a;直接观察一元函数或者一些dp值或者sg值的规律注意二进制&#xff1a;有些规律不在10进制下&#xff0c;而是存在于二进制下观察递推关系&#xff1a;有时候无法得到有用的通项&#xff0c;但是…

关于 .Net Core runtimeconfig 文件说明

项目的bin\debug\netcoreapp${Version}下面能够找到这个${AppName}.runtimeconfig.json文件&#xff0c;简单来说&#xff0c;它就是用来定义应用程序所用的共享框架&#xff08;.Net Core App&#xff09;以及运行时选项 的一个文件。一个简单的例子{ "runtimeOptions&q…

F. Cowmpany Cowmpensation(树形dp + 拉格朗日插值)

F. Cowmpany Cowmpensation 首先一般dp推导dp[i][j]∏u∈soni∑k1jdp[v][k]dp[i][j] \prod\limits_{u \in son_i} \sum\limits_{k 1} ^{j} dp[v][k]dp[i][j]u∈soni​∏​k1∑j​dp[v][k] 这个是毫无疑问的&#xff0c;然后我们考虑如何得到d≥nd \geq nd≥n的情况。 我们…

P4055 [JSOI2009]游戏(二分图匹配+博弈)

P4055 [JSOI2009]游戏 对于一个网格&#xff0c;上面有一些障碍物不能走&#xff0c;A选择起点&#xff0c;然后B走到相邻的四个格子之一&#xff0c;然后轮流移动不能移动的一方失败。求解所有可以赢的初始位置。 首先对于这个问题要想到网格图上博弈&#xff0c;两个人走的…

net core 3.0 之Grpc新特性小试牛刀

作者&#xff1a; 相信微服务大家伙都有听说和知道&#xff0c;好处弊端咱也不多说了&#xff0c;Grpc算是一个比较全面的微服务框架&#xff0c;也得到微软的支持总结下来就是&#xff0c;跨平台&#xff0c;可靠&#xff0c;通信快&#xff0c;扩展性强&#xff0c;网络消耗小…

Fraction Construction Problem(拓展欧几里德)

Fraction Construction Problem 思路 cd−efab\frac{c}{d} - \frac{e}{f} \frac{a}{b}dc​−fe​ba​ a<b&f<ba < b \& f < ba<b&f<b 1≤1,e≤410121 \leq 1, e \leq 4 \times10 ^{12}1≤1,e≤41012 当b 1时&#xff0c;一定无解。 gcd(a, b…

CF1168D Anagram Paths(由必要到充分/虚树)

CF1168D Anagram Paths 对于这道题首先有一个关键的性质&#xff0c;那就是对于一个树&#xff0c;它是可重排的&#xff0c;当且仅当在树上任意一个节点&#xff0c;所有字母在相关联的字符串中出现次数最大值之和小于当前点到叶子的距离。这个性质可以通过归纳证明&#xff0…

基于Coravel定时任务之计算总页数

在物联网系统中&#xff0c;需要计算底端所有设备的总数&#xff0c;除以分页每页显示数量&#xff0c;进行一个总页数的显示。包括状态&#xff0c;告警&#xff0c;日志等等数据都需要对应的总页数的显示。2.1 TaskSchedulerTaskScheduler库只支持.net&#xff0c;且需要结合…

拉格朗日插值

拉格朗日插值 简要阐述 结论给定n1n 1n1个点最多可以得到一个nnn次多项式的表达式&#xff0c;并且f(x)∑i1nyi∏j∤ix−xjxi−yjf(x) \sum_{i 1} ^{n} y_i \prod\limits_{j \nmid i}\frac{x - x_j}{x_i - y_j}f(x)∑i1n​yi​j∤i∏​xi​−yj​x−xj​​我们随便往里带入…

A Story of One Country (Hard)(中途相遇法/启发式分裂)

A Story of One Country (Hard) https://www.luogu.com.cn/problem/solution/CF1181E2 首先考虑暴力的做法&#xff0c;就是每次排序然后寻找分割点&#xff0c;对分割点左右两边分治处理&#xff0c;但是这样的复杂度是 最坏情况下O(n2logn)O(n^2logn)O(n2logn) 然后我们考…

Docker系列之AspNetCore Runtime VS .NetCore Runtime VS SDK(四)

接下来我们就要慢慢步入在.NET Core中使用Docker的殿堂了&#xff0c;如题在开始之前&#xff0c;我们需要搞清楚一些概念&#xff0c;要不然看到官方提供如下一系列镜像&#xff0c;我们会一脸懵逼&#xff0c;不知道到底要使用哪一个。AspNetCore Runtime VS .NetCore Runti…

HDU 6750 Function(莫比乌斯反演)(2020百度之星初赛1)

Function 推式子 S(n)∑i1n∑d∣id[gcd(d,id)1]∑d1nd∑d∣i[gcd(d,id)1]∑d1nd∑i1nd[gcd(d,i)1]∑d1nd∑i1nd∑k∣gcd(d,i)μ(k)∑k1nμ(k)k∑d1nkd∑i1nk2dtk2d∑t1nnt∑k2∣tμ(k)ktk2∑k1nμ(k)k∑k2∣tnttk2itk2∑k1nμ(k)k∑i1nk2nik2iS(n) \sum_{i 1} ^{n} \sum_{d …

P5170 【模板】类欧几里得算法

P5170 【模板】类欧几里得算法 https://www.cnblogs.com/bztMinamoto/p/10334354.html 对于类欧几里得算法&#xff0c;本质上可以理解为一条直线下的整点个数&#xff0c;是一个矩形区域。 然后将整数部分提出&#xff0c;就可以使得这个直线斜率较小&#xff0c;那么我们就可…