首页 > 其他分享 >SPOJLCMSUM - LCM Sum

SPOJLCMSUM - LCM Sum

时间:2022-11-28 13:12:04浏览次数:40  
标签:phi frac gcd int Sum texttt SPOJLCMSUM LCM sum

简要题意

\(T\) 组数据,每组数据给出一个 \(n\),计算:

\[\sum_{i=1}^{n}{\operatorname{lcm}(i,n)} \]

\(1 \leq T \leq 3\times 10^5,1 \leq n \leq 10^{6}\)

思路

比较快乐的推式子题。

\[\begin{aligned} &\sum_{i=1}^{n}{\operatorname{lcm}(i,n)}\\ &=\sum_{i=1}^{n}{\frac{in}{\gcd(i,n)}}\\ &=\frac{1}{2}(\sum_{i=1}^{n-1}{\frac{n^2}{\gcd(i,n)}})+n&\texttt{(1)}\\ &=\frac{1}{2}({\sum_{d\mid n}{\frac{n^2\varphi(n\div d)}{d}}})+n&\texttt{(2)}\\ &=n(\sum_{d\mid n}{\frac{1}{2}d\varphi(d)})+n&\texttt{(3)} \end{aligned} \]

  • \(\texttt{(1)}\):把上式拆成两个等价的式子的和除以二,发现错位相加就可以凑出来了。
  • \(\texttt{(2)}\):我们改为枚举 \(\gcd(i,n)\) 的值,不难发现 \(\gcd(i,n)\mid n\)。
  • \(\texttt{(3)}\):改为枚举上式中的 \(n\div d\),不知道为什么,直接算上式会有除以二的误差。

然后就可以做了。

时间复杂度 \(O(n\log n)\)。

代码

#include <bits/stdc++.h>
#define int long long
#pragma GCC optimize("Ofast", "inline", "-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
using namespace std;

int phi[10000005],t,n;
int ans[10000005];

void phi_table(int n) {
  phi[1] = 1;
  for (int i = 2; i <= n; i++) {
    if (!phi[i]) {
      for (int j = i; j <= n; j += i) {
        if (!phi[j]) {
          phi[j] = j;
        }
        phi[j] = phi[j] / i * (i - 1);
      }
    }
  }
  for(int i=1;i<=n;i++){
  	for(int j=1;(i*j)<=n;j++){
  		ans[i*j]+=j*phi[j]/2;
	}
  }
}

signed main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	cin>>t;
	phi_table(1e6);
	while(t--){
		cin>>n;
		cout<<((n*ans[n])+n)<<'\n';
	}
	return 0;
}

标签:phi,frac,gcd,int,Sum,texttt,SPOJLCMSUM,LCM,sum
From: https://www.cnblogs.com/zheyuanxie/p/spojlcmsum.html

相关文章

  • Apache Pulsar 社区年度峰会 Pulsar Summit Asia 2022 即将召开
    关于 PulsarSummitPulsarSummit 是 ApachePulsar 社区年度盛会,它将分布在世界各地的 ApachePulsar 项目 Contributor、Committer 和各企业 CTO/CIO、开发者、......
  • 用Sumifs代替多对一查找
    问题:从总成绩表中找出部分同学部分科目的成绩,不同班级的同学存在同名同姓。函数公式解决:=SUMIFS(OFFSET($B:$B,,MATCH(K$1,$C$1:$G$1,)),$B:$B,$J2,$A:$A,$I2) 思......
  • NPC:费解的开关、sumdiv
    1、费解的开关​​https://ac.nowcoder.com/acm/contest/998/D​​题目大意:如图。分析:简单分析可知,每个开关至多点击1次,因为你同一个开关点2次又反转回来了相当于没点,而且题......
  • 《Learning to Resolve Alliance Dilemmas in Many-Player Zero-Sum Games》 2020-AAM
    学习解决多人零和博弈中的联盟困境总结:将两人的零和博弈扩展到多人零和博弈,并将多人零和博弈中的联盟问题转为社会困境问题用基于强化学习的方法进行解决。先是说明了一......
  • ARC127 Sum of Min of Xor
    可以发现\(a_i\bigoplusb_i\bigoplusa_j\bigoplusb_j\)为\(1\)的位置,是\(a_i\bigoplusa_j\)与\(b_i\bigoplusb_j\)不同的位置。设\(c_i=a_i\bigopl......
  • CF1656E Equal Tree Sums Sol
    可以用归纳法解题。首先发现,删掉一个点,剩下的块数就是它的度数。不妨使得\(\suma_i=0\),一个点的点权等于其他所有点权的和的相反数。发现度数是相互提供的,则相邻的点......
  • 论文3 VScode&texlive&SumatraPDF打造完美书写论文工具
    文章目录​​介绍一下:​​​​一.软件下载安装​​​​1.1下载​​​​1.2安装编译器texlive2020​​​​1.3安装PDF阅读器​​​​1.4编辑器VScode​​​​a.直接百......
  • ABC 214D Sum of Maximum Weights(并查集模拟删边)
    ABC214DSumofMaximumWeights(并查集模拟删边)SumofMaximumWeights​ 给出有\(n\;(2\len\le1e5)\)个点的一棵树,定义\(f(x,y)\)表示从节点x到节点y的最短......
  • cloud-consumer-order80 微服务消费者订单Module模块
    1、建cloud-provider-payment80012、改POM<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http:......
  • Kafka transaction hanging causes consumer to stuck
    Kafka事务未关闭导致消费者无法消费消息。背景最近遇到一个问题:有一个公用topic,很多应用都读写这个topic。从某个时间点开始,所有消费该topic的消费者(read_committed级别)......