题目

【题目描述】

对于 $ A_1, A_2, \ldots, A_N $ ,求$\sum_{i = 1}^N \sum_{j = 1}^N \mathrm{lcm}(A_i, A_j)$ 的值。

$ \mathrm{lcm}(a, b) $ 表示 $ a $ 和 $ b $ 的最小公倍数

【输入格式】

第 $ 1 $ 行, $ 1 $ 个整数 $ N $ 。

第 $ 2 $ 行, $ N $ 个整数 $ A_1, A_2, \ldots, A_N $ 。

【输出格式】

$ 1 $ 个整数,表示所求的值。

【样例输入】

2

2 3

【样例输出】

17

【数据范围与提示】

对于 $ 30\% $ 的数据, $ 1 \leq N \leq 1000, 1 \leq A_i \leq 50000 $ ;

对于另外 $ 30\% $ 的数据, $ 1 \leq N \leq 50000, 1 \leq A_i \leq 1000 $ ;

对于 $ 100\% $ 的数据, $ 1 \leq N \leq 50000, 1 \leq A_i \leq 50000 $ 。

题解

期中考考得什么都不会了

记 $ f_i $ 表示被 $ i $ 整除的 $ a_j $ 除 $ i $ 的和

$ f_i =  \sum_{i|a_j} a_j $

$ g_i $ 表示 $ \sum_{j=1}^{n} \sum_{k=1}^{n} lcm(a_j,a_k)[i|gcd(a_j,a_k)] $

$ g_i=f_i^2*i $

但是 $ i $ 不一定为 $ gcd(a_j,a_k) $,那么考虑容斥掉 $ gcd(a_j,a_k) $ 为 $ i $ 的倍数的值

$ h_i=g_i-\sum_{j=2}^{i*j\leq max}h_{i*j}*j $

则 $ ans=\sum_{i=1}^{max}h_i $

代码

 #include<bits/stdc++.h>
#define LL long long
#define _(d) while(d(isdigit(ch=getchar())))
using namespace std;
int R(){
int x;bool f=;char ch;_(!)if(ch=='-')f=;x=ch^;
_()x=(x<<)+(x<<)+(ch^);return f?x:-x;}
const int N=1e5+;
int n,a[N],mx;
LL ans,f[N],g[N];
int main(){
n=R();
for(int i=;i<=n;i++){
mx=max(a[i]=R(),mx);
for(int j=;j*j<=a[i];j++)
if(a[i]%j==){
g[j]+=a[i]/j;
if(j*j!=a[i])g[a[i]/j]+=j;
}
}
for(int i=;i<=mx;i++)f[i]=g[i]*g[i]*i;
for(int i=mx;i;i--){
for(int j=;i*j<=mx;j++)
f[i]=f[i]-f[i*j]*j;
ans+=f[i];
}
cout<<ans<<endl;
return ;
}

Sum of LCM (lcmsum)的更多相关文章

  1. 扩展欧几里德解的数量(51nod 1352)

    题意:给出N,A,B:求A*x+ B*y = N+1   的大于0 的解的数量: 思路:先用exgcd求出大于0的初始解x,rest = N - x*A; sum = rest/LCM(A, B); ...

  2. ACdream 1128 Maze(费用流)

    题目链接:http://acdream.info/problem?pid=1128 Problem Description wuyiqi陷入了一个迷宫中,这个迷宫是由N*M个格子组成的矩阵.每个格子上 ...

  3. FZU2179(数位dp)

    传送门:Chriswho 题意:求区间[1,n]内能整除自己本身各位数字的数的个数. 分析:这题跟CF 55D Beautiful numbers一样的,一个数能被它的所有非零数位整除,则能被它们的最 ...

  4. PAT甲题题解-1088. Rational Arithmetic (20)-模拟分数计算

    输入为两个分数,让你计算+,-,*,\四种结果,并且输出对应的式子,分数要按带分数的格式k a/b输出如果为负数,则带分数两边要有括号如果除数为0,则式子中的结果输出Inf模拟题最好自己动手实现,考验 ...

  5. HDU4135Co-prime(容斥原理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4135 题目解析: 给你一个闭区间[A,B](1 <= A <= B <= 1015) ...

  6. Codeforces Round #202 (Div. 2) B,C,D,E

    贪心 B. Color the Fence time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  7. LOJ2565 SDOI2018 旧试题 莫比乌斯反演、三元环计数

    传送门 这道题的思路似乎可以给很多同时枚举三个量的反演题目提供一个很好的启发-- 首先有结论:\(d(ijk) = \sum\limits_{x|i}\sum\limits_{y|j}\sum\lim ...

  8. D. Beautiful numbers

    题目链接:http://codeforces.com/problemset/problem/55/D D. Beautiful numbers time limit per test 4 second ...

  9. B. Apple Tree 暴力 + 数学

    http://codeforces.com/problemset/problem/348/B 注意到如果顶点的数值确定了,那么它分下去的个数也就确定了,那么可以暴力枚举顶点的数值. 顶点的数值是和LC ...

随机推荐

  1. js页面埋点

    页面埋点的作用,其实就是用于流量分析.而流量的意思,包含了很多:页面浏览数(PV).独立访问者数量(UV).IP.页面停留时间.页面操作时间.页面访问次数.按钮点击次数.文件下载次数等.而流量分析又有 ...

  2. Java中实现MongoDB自增主键ID

    1.了解MongoDB的ObjectId        MongoDB的文档固定是使用“_id”作为主键的,它可以是任何类型的,默认是个ObjectId对象(在Java中则表现为字符串),那么为什么M ...

  3. CountDownLatch的介绍和使用

    1.类介绍 java.util.concurrent 类 CountDownLatch java.lang.Object java.util.concurrent.CountDownLatch 一个同 ...

  4. [转]浅谈javascript函数劫持

    转自:Ph4nt0m Security Team 这么多年了,现在学习依然还是有很多收货,向前辈致敬.转载一方面是自己存档一份,另一方面是让更多喜欢安全的人一同学习. ================ ...

  5. 第五章 JVM调优(待续)

    Java虚拟机内存模型 JVM内存分配参数 垃圾收集基础 常用调优案列和方法 实用JVM参数 实战JVM调优

  6. 监控和安全运维 1.4 nagios安装

    1. Nagios 简介是一个开源软件,可以监控网络设备网络流量.Linux/windows主机状态,甚至可以监控打印机它可以运行在Linux上或windows上基于浏览器的web界面方便运维人员查看 ...

  7. 部署和调优 1.3 pureftp部署和优化-2

    登录ftp,用远程的一台机器,执行 lftp 如果没有这个命令,需要安装 yum install -y lftp 登录ftp lftp ftpuser1@192.168.1.117 输入口令,即密码 ...

  8. 使用mui框架后a标签无法跳转

    由于最近工作项目上使用到前台mui框架,笔者在将H5转换为jsp时,遇见各种各样问题,原因归结为对mui框架不熟悉,今天就遇见一个特别奇怪的问题,界面中超链接<a>标签无法跳转,笔者试着添 ...

  9. Python之条件语句以及循环

    Python代码的缩进规则.具有相同缩进的代码被视为代码块 缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误. 注意: if ...

  10. PHP自定义函数获取汉字首字母的方法

    使用场景:城市列表等根据首字母排序的场景 function getFirstCharter($str) { if (empty($str)) { return ''; } $fchar = ord($ ...