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=1∑n​j=1∑n​gcd(ai​,aj​)gcd(i,j)d=1∑n​di=1∑dn​​j=1∑dn​​gcd(aid​,ajd​)[gcd(i,j)=1]d=1∑n​dk=1∑dn​​μ(k)i=1∑kdn​​j=1∑kdn​​gcd(aikd​,ajkd​)T=kdT=1∑n​i=1∑Tn​​j=1∑Tn​​gcd(aiT​,ajT​)d∣T∑​dμ(dT​)T=1∑n​ϕ(T)i=1∑Tn​​j=1∑Tn​​gcd(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=1∑Tn​​j=1∑Tn​​gcd(aiT​,ajT​),g(x)g(x)g(x)为i∈[T,2T,…,nTT]i \in [T, 2T, \dots, \frac{n}{T} T]i∈[T,2T,…,Tn​T]时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=1∑m​j=1∑m​g(i)g(j)gcd(i,j),(m=105)d=1∑m​di=1∑dm​​j=1∑dm​​g(id)g(jd)[gcd(i,j)=1]d=1∑m​dk=1∑dn​​μ(k)⎝⎛​i=1∑kdm​​g(ikd)⎠⎞​2T=kdT=1∑m​ϕ(T)⎝⎛​i=1∑Tm​​g(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=1∑m​ϕ(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;
}

G. GCD Festival(莫比乌斯、欧拉函数)相关推荐

  1. 数论 GCD 最大公约数 欧拉函数经典题 洛谷 CF1295D Same GCDs Codeforces1295D

    ​前言 两个月了,我终于更了-- 这两个月忙(chen)于(mi)内(xiang)卷(le),现在终于出新文章啦,(也算兑现了当初的出数论题文章的承诺)~ 不说废话了,今天给大家介绍一道CF/洛谷上的 ...

  2. GCD - Extreme(欧拉函数变形)

    题目链接:https://vjudge.net/problem/UVA-11426 题目大意: 给出整数n∈[2,4000000],求解∑gcd(i,j),其中(i,j)满足1≤i<j≤n. 的 ...

  3. poj2154Color polya定理+欧拉函数优化

    没想到贱贱的数据居然是错的..搞得我调了一中午+晚上一小时(哦不d飞LJH掉RP毕竟他是BUFF)结果重判就对了五次.. 回归正题,这题傻子都看得出是polya定理(如果你不是傻子就看这里),还没有翻 ...

  4. POJ 2480 (约数+欧拉函数)

    题目链接: http://poj.org/problem?id=2480 题目大意:求Σgcd(i,n). 解题思路: 如果i与n互质,gcd(i,n)=1,且总和=欧拉函数phi(n). 如果i与n ...

  5. matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...

    数论入门1 一个菜鸡对数论的一点点理解... 莫比乌斯函数 定义函数$\mu(n)$为: 当n有平方因子时,$\mu(n)=0$. 当n没有平方因子时,$\mu(n)=(-1)^{\omega(n)} ...

  6. 欧拉函数+狄利克雷卷积+莫比乌斯函数+莫比乌斯反演+整除分块+杜教筛

    Powered by:NEFU AB-IN 文章目录 欧拉函数 狄利克雷卷积 莫比乌斯函数 莫比乌斯反演 P3455 [POI2007]ZAP-Queries 整除分块 P2522 [HAOI2011 ...

  7. 专题·莫比乌斯函数与欧拉函数【including 整除分块,积性函数,狄利克雷卷积,欧拉函数,莫比乌斯函数,莫比乌斯反演

    初见安~又是好久没写博客了--加上CSP才炸了一波. 目录 一.整除分块 题解 二.积性函数 三.狄利克雷卷积 四.欧拉函数 五.莫比乌斯函数(mu) 六.莫比乌斯反演 一.整除分块 看个例题:洛谷P ...

  8. 数学/数论专题:莫比乌斯函数与欧拉函数

    数学/数论专题:莫比乌斯函数与欧拉函数(进阶) 0. 前言 1. 前置知识 2. 正文 3. 总结 4. 参考资料 0. 前言 本篇文章会从狄利克雷卷积的角度,讨论莫比乌斯函数与欧拉函数的相关性质. ...

  9. Educational Codeforces Round 81 (Rated for Div. 2) D. Same GCDs 欧拉函数\莫比乌斯

    传送门 文章目录 题意: 思路: 题意: 给定a,ma,ma,m,求满足gcd(a,m)=gcd(a+x,m)gcd(a,m)=gcd(a+x,m)gcd(a,m)=gcd(a+x,m)的xxx的个数 ...

最新文章

  1. Nginx + Spring Boot 实现负载均衡
  2. SAP WM中阶存储类型里的Full stk rmvl 字段和Return Storage type字段
  3. 使用mii-tool设置网卡速率
  4. hdu 2777(线段树)
  5. Qt QWidget实现消息提示控件TipsWidget
  6. 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2020.7.5】
  7. uniapp 页面下次渲染完成后执行:this.$nextTick
  8. 复制书稿(信息学奥赛一本通-T1278)
  9. QLoo graphql engine 学习二 基本试用(kubernetes)
  10. JDBC连接池JDBCTemplate
  11. 【 地图系列 】 世界地图和主要国家的 JSON 文件
  12. HBase下载地址(全)
  13. 杭州计算机学校课程表,超级课程表电脑版
  14. 基于K—近邻的车牌号识别小实验
  15. APP测试工具-Doraemonkit使用
  16. Alibaba珍藏版mybatis手写文档,值得一读!
  17. 鹿客、小米、智汀、德施曼这几款热门智能门锁测评:谁最安全?谁最便捷?
  18. 软件视频会议系统 服务器要求,视频会议系统招标要求.docx
  19. SPI 总线3-line、4-line的定义
  20. icepdf 将pdf转换为图片

热门文章

  1. 基于c语言单片机秒表课程设计,基于c语言单片机秒表课程设计要点.doc
  2. python怎么执行程序_小鹅通视频怎么下载?用python实现小鹅通视频下载(二)
  3. 博古通今的孩子是怎么养成的?答案就在这本影响了无数中国人思想的奇书里……
  4. 是的,我打败了一个奥特曼。
  5. 全球100款大数据工具汇总(前50款)
  6. 众里寻 Bug 千百度,蓦然回首,它却在隔壁老张处……
  7. android宿舍管理系统源码,基于android操作系统的手机宿舍管理系统使用手册
  8. python画图比赛_Python选修课第二届Turtle绘图大赛
  9. 小甲鱼零基础入门python二十一课课后题_小甲鱼Python第二十一讲课后习题
  10. micropython 网络驱动_network_网卡驱动