Sum of LCM (lcmsum)

题目

【题目描述】

对于 $ 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 $

代码

 1 #include<bits/stdc++.h>
 2 #define LL long long
 3 #define _(d) while(d(isdigit(ch=getchar())))
 4 using namespace std;
 5 int R(){
 6     int x;bool f=1;char ch;_(!)if(ch=='-')f=0;x=ch^48;
 7     _()x=(x<<3)+(x<<1)+(ch^48);return f?x:-x;}
 8 const int N=1e5+5;
 9 int n,a[N],mx;
10 LL ans,f[N],g[N];
11 int main(){
12     n=R();
13     for(int i=1;i<=n;i++){
14         mx=max(a[i]=R(),mx);
15         for(int j=1;j*j<=a[i];j++)
16             if(a[i]%j==0){
17                 g[j]+=a[i]/j;
18                 if(j*j!=a[i])g[a[i]/j]+=j;
19             }
20     }
21     for(int i=1;i<=mx;i++)f[i]=g[i]*g[i]*i;
22     for(int i=mx;i;i--){
23         for(int j=2;i*j<=mx;j++)
24             f[i]=f[i]-f[i*j]*j;
25         ans+=f[i];
26     }
27     cout<<ans<<endl;
28     return 0;
29 }
View Code

 

转载于:https://www.cnblogs.com/chmwt/p/10796798.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值