博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
luogu3911 最小公倍数之和(莫比乌斯反演)
阅读量:4910 次
发布时间:2019-06-11

本文共 2066 字,大约阅读时间需要 6 分钟。

给定\(A_1,A_2,\dots,A_N\),求\(\sum_{i=1}^N\sum_{j=1}^Nlcm(A_i,A_j)\)

\(1\le N\le 50000;1\le A_i\le 50000\)

为了推式子方便我们设:

\(n=50000\) \(a_i=\sum_{j=1}^N[A_j=i]\)

答案就是\(\sum_{i=1}^n\sum_{j=1}^na_ia_jlcm(i,j)\)

\(\sum_{i=1}^n\sum_{j=1}^na_ia_jlcm(i,j)\)

\(=\sum_{i=1}^n\sum_{j=1}^na_ia_j\frac{ij}{\gcd(i,j)}\)

\(=\sum_{p=1}^n\frac1p\sum_{i=1}^n\sum_{j=1}^na_ia_jij[\gcd(i,j)=p]\)

\(=\sum_{p=1}^np\sum_{i=1}^{n/p}\sum_{j=1}^{n/p}a_{ip}a_{jp}ij[\gcd(i,j)=1]\)

\(=\sum_{p=1}^np\sum_{i=1}^{n/p}\sum_{j=1}^{n/p}a_{ip}a_{jp}ij\sum_{d|i,d|j}\mu(d)\)

\(=\sum_{p=1}^np\sum_{d=1}^n\mu(d)d^2\sum_{i=1}^{n/dp}\sum_{j=1}^{n/dp}a_{idp}a_{jdp}ij\)

\(=\sum_{q=1}^nq\sum_{d|q}d\mu(d)\sum_{i=1}^{n/q}\sum_{j=1}^{n/q}a_{iq}a_{jq}ij\)

\(=\sum_{q=1}^nq\sum_{d|q}d\mu(d)\left(\sum_{i=1}^{n/q}a_{iq}i\right)^2\)

\(\sum_{i=1}^{n/q}a_{iq}i\)对于每个\(q\)求值,总复杂度为\(\frac n 1+\frac n 2+\frac n 3+\dots+\frac nn\)复杂度为调和级数\(O(n\log n)\)

前半部分筛\(d\)后枚举\(d\)及其倍数,复杂度还是调和级数\(O(n\log n)\)

然后直接求和就行了,貌似不用打数论分块

41行一遍A。。。真不用打数论分块,复杂度nlogn

#include 
using namespace std;int prime[50010], mu[50010], tot, fuck = 50000;bool vis[50010];long long sum1[50010], sum2[50010];int bucket[50010];int main(){ mu[1] = 1; for (int i = 2; i <= fuck; i++) { if (vis[i] == false) prime[++tot] = i, mu[i] = -1; for (int j = 1; j <= tot && i * prime[j] <= fuck; j++) { vis[i * prime[j]] = true; if (i % prime[j] == 0) break; mu[i * prime[j]] = -mu[i]; } mu[i] *= i; } for (int d = 1; d <= fuck; d++) for (int q = d; q <= fuck; q += d) sum1[q] += mu[d]; for (int i = 1; i <= fuck; i++) sum1[i] *= i; int n; scanf("%d", &n); for (int x, i = 1; i <= n; i++) scanf("%d", &x), bucket[x]++; long long ans = 0; for (int q = 1; q <= fuck; q++) { int sb = fuck / q; for (int i = 1; i <= sb; i++) sum2[q] += bucket[i * q] * (long long)i; ans += sum2[q] * sum1[q] * sum2[q]; } printf("%lld\n", ans); return 0;}

转载于:https://www.cnblogs.com/oier/p/10298560.html

你可能感兴趣的文章
怎样用Google APIs和Google的应用系统进行集成(2)----Google APIs的全部的RESTFul服务一览...
查看>>
MySQL优化建议
查看>>
js 中中括号,大括号使用详解
查看>>
读入Excel大文件解决方法
查看>>
几种流行Webservice框架性能对照
查看>>
MySQL基准测试
查看>>
hive_hiveserver2 hive-site.xml config and start
查看>>
阿里云SSL数字证书IIS配置指导
查看>>
深入理解Java:注解(Annotation)基本概念
查看>>
Jmeter发送SOAP请求对WebService接口测试
查看>>
关于《计算机程序的构造和解释》
查看>>
[ Linux 命令 ] grep
查看>>
微信服务号申请、认证、认证后申请商家支付接口
查看>>
Django Form表单
查看>>
泛型接口的定义与使用
查看>>
PHP-数据库抽象层(PDO)
查看>>
凸包模板——Graham扫描法
查看>>
api无限拓展的想像世界
查看>>
hdu 2215 Maple trees
查看>>
MySQL数据库学习三 数据库对象和基本操作
查看>>