#6229. 这是一道简单的数学题(反演 + 杜教筛)

#6229. 这是一道简单的数学题

推式子

∑i=1n∑j=1ilcm(i,j)gcd(i,j)=(∑i=1n∑j=1nlcm(i,j)gcd(i,j)+n)∗inv2所以重点求∑i=1n∑j=1nlcm(i,j)gcd(i,j)=∑i=1n∑j=1nijgcd(i,j)2=∑d=1n∑i=1nd∑j=1ndij(gcd(i,j)==1)=∑d=1n∑k=1ndμ(k)k2(∑i=1nkdi)2我们另t=kd,得到∑t=1n(∑i=1nti)2∑k∣tμ(k)k2接下来就是考虑如何在非线性的时间内筛选出∑k∣tμ(k)k2的前缀和来我们设f(n)=(μid2∗I)(n),也就是∑k∣tμ(k)k2的卷积形式。g(n)=id2,显然有f(n)∗g(n)=μid2∗I∗id2μid2∗id2=∑d∣nμ(d)d2(nd)2=n2ϵ=ϵ所以有f(n)∗g(n)=I套进杜教筛里面去得到S(n)=∑i=1nI−∑d=2nd2S(nd)\sum_{i = 1} ^{n} \sum_{j = 1} ^{i} \frac{lcm(i, j)}{gcd(i, j)}\\ = (\sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \frac{lcm(i, j)}{gcd(i, j)} + n) * inv2\\ 所以重点求\sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \frac{lcm(i, j)}{gcd(i, j)}\\ = \sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \frac{ij}{gcd(i, j) ^ 2}\\ = \sum_{d = 1} ^{n} \sum_{i = 1} ^{\frac{n}{d}} \sum_{j = 1} ^{\frac{n}{d}}ij (gcd(i, j) == 1)\\ = \sum_{d = 1} ^{n} \sum_{k = 1} ^{\frac{n}{d}} \mu(k) k ^ 2 (\sum_{i = 1} ^{\frac{n}{kd}} i) ^ 2\\ 我们另t = kd,得到\\ \sum_{t = 1} ^{n} (\sum_{i = 1} ^{\frac{n}{t}}i) ^ 2 \sum_{k \mid t} \mu(k) k ^ 2\\ 接下来就是考虑如何在非线性的时间内筛选出\sum_{k \mid t} \mu(k) k ^ 2的前缀和来\\ 我们设f(n) = (\mu\ id ^ 2 * I)(n),也就是\sum_{k \mid t} \mu(k) k ^ 2的卷积形式。\\ g(n) = id ^ 2, 显然有f(n) * g(n) = \mu\ id ^ 2 * I * id ^ 2\\ \mu\ id ^ 2 * id ^ 2 = \sum_{d \mid n} \mu(d) d ^ 2 (\frac{n}{d}) ^ 2 = n ^ 2\epsilon = \epsilon\\ 所以有f(n) * g(n) = I\\ 套进杜教筛里面去得到S(n) = \sum_{i = 1} ^{n} I - \sum_{d = 2} ^{n} d ^ 2S(\frac{n}{d})\\ i=1nj=1igcd(i,j)lcm(i,j)=(i=1nj=1ngcd(i,j)lcm(i,j)+n)inv2i=1nj=1ngcd(i,j)lcm(i,j)=i=1nj=1ngcd(i,j)2ij=d=1ni=1dnj=1dnij(gcd(i,j)==1)=d=1nk=1dnμ(k)k2(i=1kdni)2t=kdt=1n(i=1tni)2ktμ(k)k2线ktμ(k)k2f(n)=(μ id2I)(n)ktμ(k)k2g(n)=id2,f(n)g(n)=μ id2Iid2μ id2id2=dnμ(d)d2(dn)2=n2ϵ=ϵf(n)g(n)=IS(n)=i=1nId=2nd2S(dn)

代码

/*Author : lifehappy
*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>
#define endl "\n"using namespace std;typedef long long ll;const int inf = 0x3f3f3f3f;
const double eps = 1e-7;const int mod = 1e9 + 7, N = 1e6 + 10, inv6 = 166666668, inv2 = 500000004;int prime[N], mu[N], cnt;ll sum[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() {mu[1] = 1;for(int i = 2; i < N; i++) {if(!st[i]) {prime[cnt++] = i;mu[i] = -1;}for(int j = 0; j < cnt && i * prime[j] < N; j++) {st[i * prime[j]] = 1;if(i % prime[j] == 0)   break;mu[i * prime[j]] = -mu[i];}}for(int i = 1; i < N; i++) {for(int j = i; j < N; j += i) {sum[j] = (sum[j] + 1ll * i * i % mod * mu[i] % mod + mod) % mod;}}for(int i = 1; i < N; i++) {sum[i] = (sum[i] + sum[i - 1]) % mod;}
}ll calc1(ll n) {ll ans = 1ll * (1 + n) * n / 2 % mod;return 1ll * ans * ans % mod;
}ll calc2(ll n) {return 1ll * n * (n + 1) % mod * (2 * n + 1) % mod * inv6 % mod;
}unordered_map<int, int> ans_s;ll S(int n) {if(n < N) return sum[n];if(ans_s.count(n)) return ans_s[n];ll ans = n;for(ll l = 2, r; l <= n; l = r + 1) {r = n / (n / l);ans = (ans - 1ll * (calc2(r) - calc2(l - 1) + mod) % mod * S(n / l) % mod + mod) % mod;}return ans_s[n] = ans;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);// cout << quick_pow(2, mod - 2) << endl;init();ll n, ans = 0;scanf("%lld", &n);for(ll l = 1, r; l <= n; l = r + 1) {r = n / (n / l);ans = (ans + 1ll * calc1(n / l) * ((S(r) - S(l - 1) + mod) % mod) % mod) % mod;}printf("%lld\n", 1ll * (ans + n) * inv2 % mod);return 0;
}

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

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

相关文章

开源题材征集 + MVCEF Core 完整教程小结

到目前为止&#xff0c;我们的MVCEF Core 完整教程的理论部分就全部结束了&#xff0c;共20篇&#xff0c;覆盖了核心的主要知识点。下一阶段是实战部分&#xff0c;我们将会把这些知识点串联起来&#xff0c;用10篇(天)来完成一个开源项目。现向园友征集题材&#xff0c;你提需…

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

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

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

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

关于 .Net Core runtimeconfig 文件说明

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

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

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

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

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

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

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

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

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

.NET Core跨平台部署于Docker(Centos)- 视频教程

.NET Core跨平台部署于Docker,Docker部署于Centos中&#xff0c;演示跨平台特性&#xff01;以下视频教程&#xff0c;请带上耳机开始聆听往期教程&#xff1a;.NET开发框架(一)-框架介绍与视频演示.NET开发框架(二)-框架功能简述.NET开发框架(三)-高可用服务器端设计.NET开发框…

【清华集训2014】Sum)(类欧几里得算法)

【清华集训2014】Sum 然后本质上我们需要求解的就是那个带根号式子的奇偶性&#xff0c;然后我们发现这个式子很像是类欧几里得算法&#xff0c;求解一个斜率为无理数直线下的整点个数&#xff0c;然后我们直接对于一般形式求解&#xff0c;那么就是每次利用整数部分将斜率减小…

一本让我多花2倍时间读的书

这里是Z哥的个人公众号每周五11&#xff1a;45 按时送达当然了&#xff0c;也会时不时加个餐&#xff5e;我的第「87」篇原创敬上Hi&#xff0c;大家好&#xff0c;我是Z哥。熟悉我的小伙伴应该知道&#xff0c;我平时看书大多都很快&#xff0c;之前还把自己的速读技巧分享给了…

[NOI2005]月下柠檬树 (自适应辛普森)

P4207 [NOI2005]月下柠檬树 如图&#xff0c;我们要求的面积就是这些圆形跟梯形的组合&#xff0c;由于投射到地面上&#xff0c;显然有h′htanθh \frac{h}{tan \theta}h′tanθh​&#xff0c;由此我们就可以开始推导这个f(x)f(x)f(x)函数了。 所以转换为我们要推导出直线a…

Kong 1.3发布,原生gRPC代理、上游TLS交叉认证

Kong 1.3 发布了&#xff0c;此版本亮点包括支持原生 gRPC 代理、上游 TLS 交叉认证&#xff0c;以及一系列新功能和性能改进。原生 gRPC 代理越来越多的用户转向微服务架构&#xff0c;并且希望有对原生 gRPC 代理的支持&#xff0c;Kong 1.3 解决了这个问题&#xff0c;为支持…

对Windows桌面应用程序进行UI自动化测试

所谓UI自动化测试&#xff0c;就是模拟一个用户&#xff0c;对应用程序的UI进行操作&#xff0c;以完成特定场景的功能性集成测试。要对Windows桌面应用程序进行UI自动化测试&#xff0c;目前可选的技术主要是两种&#xff1a;VS自带的CodedUI Test和AppiumWinAppDriver。但是&…

项目实战中如何使用抽象类和接口

引子&#xff1a;时常会有这么一个疑惑&#xff0c;抽象类和接口功能好像&#xff0c;真正用起来该如何抉择呢&#xff1f;&#xff1f;好问题。。来看看书上怎么说的&#xff08;C#7.0本质论&#xff09;虽然方法可在基类中声明为抽象成员&#xff0c;但是&#xff01;&#x…

番茄日志发布1.0.3版本-增加Kafka支持

番茄日志&#xff08;TomatoLog&#xff09;能做什么可能你是第一次听说TomatoLog&#xff0c;没关系&#xff0c;我可以从头告诉你&#xff0c;通过了解番茄日志&#xff0c;希望能帮助有需要的朋友&#xff0c;番茄日志处理将大大降低你采集、分析、处理日志的过程。介绍Toma…

ArangoDB 3.5发布:流事务API、蒙面数据、搜索性能大幅提升、最短路径功能

ArangoDB 3.5 发布了。ArangoDB 是一个分布式原生的多模型数据库&#xff0c;具有灵活的文档、图形和键值数据模型。使用方便的 SQL 查询语言或 JavaScript 扩展构建高性能应用程序。此版本亮点包括&#xff1a;期待已久的 Streaming Transactions API&#xff0c;可以直接使用…

ASP.NET Core on K8S深入学习(7)Dashboard知多少

本篇已加入《.NET Core on K8S学习实践系列文章索引》&#xff0c;可以点击查看更多容器化技术相关系列文章。在第二篇《部署过程解析与Dashboard》中介绍了如何部署Dashboard&#xff0c;但是没有更多地介绍如何使用Dashboard&#xff0c;本文就来对Dashboard的使用进行补充。…

【学习笔记】Docker - 02. 在容器中运行软件(上)

2.1 控制容器: 构建一个网站监视器 需求: 客户想让你做一个网站, 这个网站需要被紧密的监视, 如果服务器宕机了, 那么它们的团队会收到相关的邮件. 这里用到了3个容器. 第一个运行NGINX; 第二个运行一个叫做mailer的程序. 这两个容器都是detached的. Detached 表示容器将在后台…

lintcode 有效的括号序列

心血来潮&#xff0c;半夜做了一道Lintcode的题目&#xff0c;调试完睡觉&#xff0c;欢迎大家批评指正。 public boolean isValidParentheses(String s) {// Write your code hereStack stacknew Stack();if(s.length()0){return true;}else if(s.length()1){return false;}fo…