首页 > 其他分享 >P1390 公约数的和 题解

P1390 公约数的和 题解

时间:2023-01-14 15:44:57浏览次数:64  
标签:phi gcd limits int 题解 sum P1390 varphi 公约数

传送门
题意:求出

\(\sum\limits_{i=1}^{n}\sum\limits_{j=i+1}^{n}\gcd(i,j)\)

原式
\(=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{i - 1}\gcd(i,j)\)

\(=\sum\limits_{d=1}^n\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{i - 1}[gcd(i,j) = d]\)

\(=\sum\limits_{d=1}^n\sum\limits_{i=1}^{\frac{n}{d}}\sum\limits_{j=1}^{i-1}d\times [gcd(i,j) = 1]\)

\(=\sum\limits_{d=1}^nd\times \sum\limits_{i=1}^{\frac{n}{d}}\varphi(i)\)

令:\(phi(x) =\sum\limits_{i=1}^x\varphi(i)\)。
原式:
\(=\sum\limits_{d=1}^nd\times phi(\frac{n}{d})\)

注意:这一题中 \(\varphi(1) = 0\),因为求和时是从 1 至 i - 1。
这里可以用整除分块来做,时间复杂度:\(O(n+T\sqrt n)\)。

AcCode:

``````cpp
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const int N = 2e6, inf = 1e9, P = inf + 7;
int v[N + 1], cnt[N + 1];
ll phi[N + 1];
vector<int> ve;

void init() {
	phi[1] = 0;
	for (int i = 2; i <= N; i++) {
		if (!v[i]) {
			v[i] = i;
			phi[i] = i - 1;
			ve.push_back(i);
		}
		for (auto j : ve) {
			if (j > i || j > N / i) break;
			v[i * j] = j;
			phi[i * j] = phi[i] * (i % j ? j - 1 : j);
		}
	}
	for (int i = 1; i <= N; i++)
		phi[i] += phi[i - 1];
}

int main() {
	init();
	int T = 1;
	// scanf("%d", &T);
	while (T--) {
		int n;
		scanf("%d", &n);
		if (n == 0)
			break;
		ll ans = 0;
		for (int d = 1; d <= n; d++) {
			int k = n / (n / d);
			ans += phi[n / d] * (d + k) * (k - d + 1) / 2;
			d = k;
		}
		printf("%lld\n", ans);
	}
	return 0;
}

标签:phi,gcd,limits,int,题解,sum,P1390,varphi,公约数
From: https://www.cnblogs.com/Vancezyx/p/17051925.html

相关文章

  • P4220 题解
    前言题目传送门!更好的阅读体验?思路代码为了使代码更容易通过,可以像我一样膜拜大佬,获得随机种子,通过的概率更大。#include<iostream>#include<cstdio>#include<......
  • 【题解】P5030 长脖子鹿放置(网络流)
    长脖子鹿放置题目背景众周所知,在西洋棋中,我们有城堡、骑士、皇后、主教和长脖子鹿。题目描述如图所示,西洋棋的“长脖子鹿”,类似于中国象棋的马,但按照“目”字攻击,且没......
  • 1.14模拟赛题解
    T1考虑枚举线段的中点,计算它对答案的贡献。时间复杂度\(O(nm)\)。T2首先可以计算出最大流量\(maxf=\dfrac{sum}{len}\)。那么就可以将\(k\)条路径当成一条来看。把......
  • 【题解】P4292 [WC2010]重建计划
    【乐正绫AI】世末歌者「Cotton」绫绫,有你AI的每一天,我都很幸福[大笑][大笑][大笑]【乐正绫AI】世末歌者【砖厂浪人&TsingClouds】绫绫,有你的每一天,我都很幸福[大笑][大......
  • Centos7下安装Dogtail GUI自动化测试工具并打开sniff工具过程中遇到的问题解决方法
    (目录)因为测试需要,需在Centos下进行liunxGUI软件自动化测试,所以用到了python的Dogtail库,继而使用Dogtail的sniff控件获取工具,但是遇到了很多问题记录如下。1环境Cent......
  • SPOJ LCMSUM 题解
    LCMSUM题意:求:\(\sum\limits_{i=1}^n\lim(i,n)\)数据范围:\(1\leqT\leq3\times10^5\),\(1\leqn\leq10^6\)。原式\(=\sum\limits_{i=1}^n\frac{i\timesn}{\gc......
  • 题解 CF678D【Iterated Linear Function】
    暴力解法。初学群论,可能写的不是很严谨,望大佬指正。problem\[g^{(n)}(x)=\begin{cases}x,&(n=0).\\f(g^{(n-1)}),&(n>0).\end{cases}\]其中\(f\)是一次函数。给出......
  • 【题解】CF848C Goodbye Souvenir
    冷漠和缄默思路cdq分治。有各种懂哥写了科技做法,比如树套树和二维分块,有点离谱。首先考虑答案的形式。令\(lst_i\)为\([1,i)\)中\(a_i\)最后一次出现的位置,则......
  • AGC060 题解
    Wow,ChristmasRound.--Tom66A.NoMajority(1300)结论:若一个序列有严格众数,则序列中必有两个相同数字位置之差为\(1\)或\(2\)。证明设序列长为$k$,则严格......
  • vue 使用echarts图表 setOption多次很卡问题解决
    项目场景:在开发ISM组态软件时,使用echarts图表,拖拽图表很卡。问题描述在vue中使用echarts使用setOption更新加载图形很慢原因分析:由于this.echartsView=echarts.init(view,......