G. GCD Festival(莫比乌斯、欧拉函数)

G. GCD Festival

∑i=1n∑j=1ngcd⁡(ai,aj)gcd⁡(i,j)∑d=1nd∑i=1nd∑j=1ndgcd⁡(aid,ajd)[gcd⁡(i,j)=1]∑d=1nd∑k=1ndμ(k)∑i=1nkd∑j=1nkdgcd⁡(aikd,ajkd)T=kd∑T=1n∑i=1nT∑j=1nTgcd⁡(aiT,ajT)∑d∣Tdμ(Td)∑T=1nϕ(T)∑i=1nT∑j=1nTgcd⁡(aiT,ajT)\sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \gcd(a_i, a_j) \gcd(i, j)\\ \sum_{d = 1} ^{n} d \sum_{i = 1} ^{\frac{n}{d}} \sum_{j = 1} ^{\frac{n}{d}} \gcd(a_{id}, a_{jd})[\gcd(i, j) = 1]\\ \sum_{d = 1} ^{n} d \sum_{k = 1} ^{\frac{n}{d}} \mu(k) \sum_{i = 1} ^{\frac{n}{kd}} \sum_{j = 1} ^{\frac{n}{kd}} \gcd(a_{i kd}, a_{jkd})\\ T = kd\\ \sum_{T = 1} ^{n} \sum_{i = 1} ^{\frac{n}{T}} \sum_{j = 1} ^{\frac{n}{T}} \gcd(a_{iT}, a_{jT}) \sum_{d \mid T} d \mu(\frac{T}{d})\\ \sum_{T = 1} ^{n} \phi(T) \sum_{i = 1} ^{\frac{n}{T}} \sum_{j = 1} ^{\frac{n}{T}} \gcd(a_{iT}, a_{jT})\\ i=1nj=1ngcd(ai,aj)gcd(i,j)d=1ndi=1dnj=1dngcd(aid,ajd)[gcd(i,j)=1]d=1ndk=1dnμ(k)i=1kdnj=1kdngcd(aikd,ajkd)T=kdT=1ni=1Tnj=1Tngcd(aiT,ajT)dTdμ(dT)T=1nϕ(T)i=1Tnj=1Tngcd(aiT,ajT)
我们考虑设f(n,T)=∑i=1nT∑j=1nTgcd⁡(aiT,ajT)f(n, T) = \sum\limits_{i = 1} ^{\frac{n}{T}} \sum\limits_{j = 1} ^{\frac{n}{T}} \gcd(a_{iT}, a_{jT})f(n,T)=i=1Tnj=1Tngcd(aiT,ajT)g(x)g(x)g(x)i∈[T,2T,…,nTT]i \in [T, 2T, \dots, \frac{n}{T} T]i[T,2T,,TnT]xxx的出现次数。
f(n,T)=∑i=1m∑j=1mg(i)g(j)gcd⁡(i,j),(m=105)∑d=1md∑i=1md∑j=1mdg(id)g(jd)[gcd⁡(i,j)=1]∑d=1md∑k=1ndμ(k)(∑i=1mkdg(ikd))2T=kd∑T=1mϕ(T)(∑i=1mTg(iT))2f(n, T) = \sum_{i = 1} ^{m} \sum_{j = 1} ^{m} g(i) g(j) \gcd(i, j), (m = 10 ^ 5)\\ \sum_{d = 1} ^{m} d \sum_{i = 1} ^{\frac{m}{d}} \sum_{j = 1} ^{\frac{m}{d}} g(id) g(jd) [\gcd(i, j) = 1]\\ \sum_{d = 1} ^{m} d \sum_{k = 1} ^{\frac{n}{d}} \mu(k) \left( \sum_{i = 1} ^{\frac{m}{kd}} g(ikd) \right) ^ 2\\ T = kd\\ \sum_{T = 1} ^{m} \phi(T) \left( \sum_{i = 1} ^{\frac{m}{T}} g(iT) \right) ^ 2\\ f(n,T)=i=1mj=1mg(i)g(j)gcd(i,j),(m=105)d=1mdi=1dmj=1dmg(id)g(jd)[gcd(i,j)=1]d=1mdk=1dnμ(k)i=1kdmg(ikd)2T=kdT=1mϕ(T)i=1Tmg(iT)2
考虑重新定义g(n)g(n)g(n)表示为是nnn的倍数的数字有多少个,则上式可以直接写成:
∑T=1mϕ(T)g(T)2\sum_{T = 1} ^{m} \phi(T) g(T) ^ 2\\ T=1mϕ(T)g(T)2
由此我们可以在O(nlog⁡2n)O(n \log ^ 2n)O(nlog2n)的时间内完成这题。

#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10, mod = 1e9 + 7;int prime[N], phi[N], a[N], n, cnt;int sum[N], m;bool st[N];vector<int> fac[N];inline int add(int x, int y) {return x + y < mod ? x + y : x + y - mod;
}inline int sub(int x, int y) {return x >= y ? x - y : x - y + mod;
}void init() {phi[1] = 1;for (int i = 2; i < N; i++) {if (!st[i]) {prime[++cnt] = i;phi[i] = i - 1;}for (int j = 1; j <= cnt && 1ll * i * prime[j] < N; j++) {st[i * prime[j]] = 1;if (i % prime[j] == 0) {phi[i * prime[j]] = phi[i] * prime[j];break;}phi[i * prime[j]] = phi[i] * (prime[j] - 1);}}for (int i = 1; i < N; i++) {for (int j = i; j < N; j += i) {fac[j].push_back(i);}}
}int f(int n, int T) {int ans = 0;for (int i = T; i <= n; i += T) {for (auto it : fac[a[i]]) {ans = sub(ans, 1ll * phi[it] * sum[it] % mod * sum[it] % mod);sum[it]++;ans = add(ans, 1ll * phi[it] * sum[it] % mod * sum[it] % mod);}}for (int i = T; i <= n; i += T) {for (auto it : fac[a[i]]) {sum[it]--;}}return ans;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);init();scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d", &a[i]);}int ans = 0;for (int T = 1; T <= n; T++) {ans = add(ans, 1ll * phi[T] * f(n, T) % mod);}printf("%d\n", ans);return 0;
}

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

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

相关文章

APM(应用性能管理)与Dapper原理介绍

一、APM&#xff08;应用性能管理&#xff09; 1.1 什么是APM&#xff1f; APM (Application Performance Management) 即应用性能管理&#xff08;应用性能监控&#xff09; APM主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化&#xff0c;提高企业IT应用的可靠…

asp.netcore3.0 使用 DbProviderFactories 连接数据库

在.netstandard2.0时 System.Data.Common 这个包里并没有加入DbProviderFactoriesDbProviderFactories类在.netframework中是非常重要的存在,依靠他可以适配各种数据库客户端&#xff08;sqlserver、mysql、sqllite等&#xff09;创建数据库连接。现在可以像.netframework中一样…

MIT 6.824 Lab 1 MapReduce

MapReduce 目标 根据论文所说明的&#xff0c;有MASTER和WORKER两类工作节点&#xff0c;以下实现大都按照论文所说的实现&#xff0c;但是在对MASTER的实现上有所改动&#xff1a; MASTER向WORKER发送心跳检测&#xff0c;这里改为了对分配出去的任务进行超时监控。 MASTER…

大家在寻找的高级程序员到底是什么样子的?

你好&#xff0c;我是Z哥。这篇文章主题很简单&#xff0c;就是一个很常见的话题“什么是高级程序员&#xff1f;”。文章稍微长了些&#xff0c;但是很容易阅读。我们的中国文化&#xff0c;对“面子”看的特别重&#xff0c;所以你会发现身边到处都是高级XXX&#xff0c;听着…

应用服务器——JBoss架构分析

JBoss是什么? JBoss是免费的&#xff0c;开放源代码J2EE的实现&#xff0c;它通过LGPL许可证进行发布。它提供了基本的EJB容器以及EJB(好像应该是J2EE)服务&#xff0c;例如&#xff1a;数据库访问JDBC、交易(JTA/JTS)、消息机制(JTS)、命名机制(JNDI)和管理支持(JMX)。目前的…

优秀的程序员是那种过单行线马路都要往两边看的人

最近一周帮我以前一个同事推荐工作&#xff0c;顺便了解下行情&#xff0c;我这个同事我感觉还行&#xff0c;技术不说有多好&#xff0c;但是往年绝对不至于简历筛选时被刷掉那种&#xff0c;最先开始推给了一个我比较信任的HR手里&#xff0c;她兼职猎头&#xff0c;推给这个…

应用服务器——tomcat架构分析

先mark&#xff0c;后续补充 https://blog.csdn.net/qq_38245537/article/details/79009448

【为自己相亲】单身小姐姐你在哪里,我是书豪,我在等你

笔者简介Introduction书豪&#xff1a;【人工智能爱好者社区】公众号负责人《R数据科学实战&#xff1a;工具详解与案例分析》书籍作者。 你没看错这是书豪在给自己寻觅良缘如果你有&#xff0c;或者身边的朋友有兴趣请与我联系基本信息 出生日期&#xff1a;1995年5月身高&am…

应用服务器——jetty架构分析

先mark&#xff0c;后续补充 PS&#xff1a;网上找的资料要么太旧&#xff08;2010年的&#xff09;&#xff0c;要么乱七八糟不知所云。百度真弱鸡

知道的越多,越感觉自己渺小

作者&#xff1a;猛哥&#xff0c;关注技术和人文发展的程序员&#xff0c;架构师社区合伙人芝诺说&#xff1a;“人的知识就像一个圆&#xff0c;圆圈外是未知的&#xff0c;圆圈内是已知的&#xff0c;你知道的越多&#xff0c;你的圆圈就会越大。圆的周长也就越大&#xff0…

Java8新特性解析

Java 8中的新特性有&#xff1a; 接口中默认方法&#xff0c;lambda 表达式,方法引用,重复注解&#xff0c;流、函数、接口、map扩展、日期中的新变化等&#xff0c;接下来一一介绍 1. Default Methods for Interfaces(接口中的默认方法) Java 8准许我们在接口中增加一个通过…

.NET Core 3.0 System.Text.Json 和 Newtonsoft.Json 行为不一致问题及解决办法

行为不一致.NET Core 3.0 新出了个内置的 JSON 库, 全名叫做尼古拉斯 System.Text.Json - 性能更高占用内存更少这都不是事...对我来说, 很多或大或小的项目能少个第三方依赖项, 还能规避多个依赖项的依赖 Newtonsoft.Json 版本不一致的问题, 是件极美的事情.但是, 结果总不是不…

Java9 新特性

在介绍 java9 之前&#xff0c;我们先来看看java成立到现在的所有版本。 1990年初&#xff0c;最初被命名为Oak&#xff1b;1995年5月23日&#xff0c;Java语言诞生&#xff1b;1996年1月&#xff0c;第一个JDK-JDK1.0诞生&#xff1b;1996年4月&#xff0c;10个最主要的操作系…

深入探究Kubernetes - 初识容器

♥2019年8月28星期三第47篇原创引言最近Kubernetes比较火&#xff0c;新技术快速火起来&#xff0c;一定有它强大的优势&#xff0c;Hr反馈&#xff0c;招聘时会Kubernetes的很少&#xff0c;风口上的Kubernetes一起学学&#xff1f;扫盲贴&#xff0c;参考《Kubernetes进阶实践…

Java10 新特性

作为当今使用最广泛的编程语言之一的 Java 在 2018 年 3 月 21 日发布了第十个大版本。为了更快地迭代、更好地跟进社区反馈&#xff0c;Java 语言版本发布周期调整为每隔 6 个月发布一次。Java 10 是这一新规则之后&#xff0c;采用新发布周期的第一个大版本。Java 10 版本带来…

WinForms项目升级.Net Core 3.0之后,没有WinForm设计器?

目录.NET Conf 2019Window Forms 设计器2019 9.23-9.25召开了 .NET Conf 2019 大会&#xff0c;大会宣布了 .Net Core 3.0 正式版。这两天我也开始试着将自己Github上的项目从 .Net Core 2.2升级到 .Net Core 3.0 。其中有一个项目&#xff0c;是fork下来的Windows Forms项目&a…

Java11 新特性

Java 11新特性的详细解释。JDK 11已经于 2018年9月25日正式发布&#xff0c;那么Java 11主要包含哪些新特性呢&#xff1f; JDK 11是Java SE 11平台版本11的开源参考实现&#xff0c;由JSR 384在Java Community Process中指定。 阿里巴巴是中国唯一的JCP委员会成员公司&#x…

福爆 | 博客升级 .NET Core 3.0 又踩一坑

点击上方蓝字关注“汪宇杰博客”导语昨天刚发了一篇《生产大爆炸发生问题的是已经被删除的博客文章&#xff0c;正常情况下&#xff0c;这些不存在的文章会直接显示自定义的404页面&#xff0c;但实际上产生了500异常。日志如下&#xff1a;2019-09-26 00:11:50.8405|RD00155DB…

Sping5——响应式编程

1、响应式编程基础 1.1、什么是响应式编程&#xff1f; 响应式编程是一种面向数据流和变化传播的编程范式。 使用它可以在编程语言中很方便地表达静态或动态的数据流&#xff0c;而相关的计算模型会自动将变化的值通过数据流进行传播。我们可以使用声明的方式构建应用程序的能…

.NET Core使用NPOI导出复杂Word详解

最近使用NPOI做了个导出Word文档的功能&#xff0c;关于使用.NET Core 导出Word文档的方式有很多。最终我为什么选择了NPOI来实现了这个功能&#xff0c;首先是NPOI是一个开源&#xff0c;免费且容易上手的第三方框架&#xff08;并且现在已支持.NET Core&#xff0c;GitHub源码…