zoukankan      html  css  js  c++  java
  • 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*jleq 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
  • 相关阅读:
    每天一篇经济学人 2020-09-15 分享在 特朗普的“疫苗政治”:科学与政治之争 | 经济学人
    english notes
    new word
    gilbert strang
    news etc
    对自己的要求
    JDBC添加数据
    题目-1031-字符串反转
    题目-1002-字符串分类统计
    ERROR:格式化hdfs后,datanode只启动了一个
  • 原文地址:https://www.cnblogs.com/chmwt/p/10796798.html
Copyright © 2011-2022 走看看