首页 > 其他分享 >SPOJ LCMSUM 题解

SPOJ LCMSUM 题解

时间:2023-01-14 12:33:07浏览次数:64  
标签:frac gcd limits LCMSUM 题解 sum mid times SPOJ

LCMSUM

题意: 求:

\(\sum\limits_{i=1}^n\lim(i,n)\)

数据范围:\(1\leq T \leq 3\times 10^5\), \(1 \leq n \leq 10^6\)。

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

\(=n\times\sum\limits_{i=1}^n \frac{i}{\gcd(i, n)}\)

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

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

\(=n\times\sum\limits_{d\mid n}f(\frac{n}{d})\)

\(=n\times\sum\limits_{d\mid n}f(d)\)

这里 \(f(n)\) 表示 \([1,n]\) 中与 n 互质的数的和。
有: \(f(n) = \dfrac{n\times \varphi(n)}{2}\)
因为 \(\gcd(n, x) = \gcd(n, n - x)\),与 x 不互质的数字 \(x, n-x\) 永远成对出现。
但是 1 是一个特殊的数 \(f(1) = 1\)。

令:
\(g(x) = n\times\sum\limits_{d\mid n}f(d)\)

\(= \frac{n}{2}\times(1+\sum\limits_{d\mid n}d\times \varphi(d))\)
这里的 +1 是指 \(\varphi(1)\) 。
显然,函数 \(p(n) = \sum\limits_{d\mid n}d\times \varphi(d)\) 是个积性函数,用埃氏筛法求出 \(\forall (1\leq i\leq n)p(i)\)。
复杂度: \(O(nlog_2n + T)\)。

AcCode:

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N = 1e6;

int v[N+1], phi[N+1];
ll p[N+1];
vector<int> ve;

void init() {
	phi[1] = 1;
	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++)
		for (int j = 1; j * i <= N; j++)
			p[i * j] += phi[i] * 1ll * i;
}

int main() {
	init();
	int T, n;
	scanf("%d", &T);
	while (T--) {
		scanf("%d", &n);
		printf("%lld\n", n * 1ll * (1 + p[n]) / 2);
	}
	return 0;
}

标签:frac,gcd,limits,LCMSUM,题解,sum,mid,times,SPOJ
From: https://www.cnblogs.com/Vancezyx/p/17051579.html

相关文章

  • 题解 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,......
  • Ubuntu Server20.04 sssd+samba4共享无法访问问题解决
    UbuntuServer20.04sssd+samba4共享无法访问问题解决报错: \\ipisnotaccessible排查:在samba的log里(/var/log/samba/log.ip)能看到winbinddnotrunning解决:#apt-getins......
  • IOI 2019 题解
    Day1A排列鞋子从前往后考虑每个位置\(i\),并找到与它匹配的最靠前的元素,将这两个元素放在最靠前的空位置,最后算一下逆序对个数即可。Day1B景点划分假设\(a\leb\le......
  • 【题解】CF893F Subtree Minimum Query
    那个……令姐……能以成亲为前提……和我交往吗(娇羞)集训完刚好开方舟春活,并且我刚好攒够了给令姐买衣服的石头,这真的是巧合吗?思路各种做法,但是有强化版。首先是naive......
  • 题解 P8294 [省选联考 2022] 最大权独立集问题
    Solution根据一些逝去的记忆可以得到一个DP状态:\(f_{u,x,y}\)表示\(u\)这棵子树,\(x\)从子树出去,\(y\)进来这棵子树。然后讨论一下状态转移,可以暴力枚举状态,暴力枚......
  • CF244A Dividing Orange 题解
    Description有\(n\timesk\)个橘子,\(k\)个小朋友每人拿\(n\)个,但是每个人都指定了一个橘子\(a_i\),分配时必须要把\(a_i\)给第\(i\)个小朋友,求任一分配方案。So......
  • js加法精度问题解决
    //加法exportconstnumAdd=(num1,num2)=>{letbaseNum,baseNum1,baseNum2try{baseNum1=num1.toString().split('.')[1].length}cat......