首页 > 其他分享 >关于一个数学题与它的做法

关于一个数学题与它的做法

时间:2022-08-17 16:49:12浏览次数:48  
标签:gcd limits dfrac sum varphi 关于 做法 数学题 互质

Description

给定 \(n\),求 \(\sum\limits_{i = 1}^n \operatorname{lcm}(i, n)\),多组数据,有 \(3e5\) 组数据,\(n\le 1e6\)。

Solution

\(\sum\limits_{i = 1} ^n \operatorname{lcm}(i, n) = \sum\limits_{i = 1} ^n \dfrac{in}{\gcd(i, n)} = n\sum\limits_{i = 1}^n \dfrac{i}{\gcd(i, n)}\)

考虑贡献,枚举 \(d = \gcd(i, n)\),则有 \(n\sum\limits_{i = 1}^n \dfrac{i}{d} = n\sum\limits_{i = 1}^n\sum\limits_{d|n, d|i}\dfrac{i}{d}\times [\gcd(n/d, i/d)] = n\sum\limits_{d|n}\sum\limits_{k = 1}^{\lfloor \frac{n}{d}\rfloor} k[\gcd(k, \dfrac{n}{d}) = 1]\)

显然 \(\dfrac{n}{d}\) 与 \(d\) 是等价的。因此有 \(n\sum\limits_{d|n}\sum\limits_{k = 1}^{d} k[\gcd(k, d) = 1]\)。对于单独的 \(d\) 就是计算比它小的与其互质的数字的数量。

这又涉及一个欧拉函数的性质,与 \(n\) 互质且小于等于 \(n\) 的数字的和是 \(\dfrac{\varphi(n)n}{2}\)。这是因为 \(\gcd(n - x, n)\),那么每个与 \(n\) 互质的数字是成双成对出现的,而且和为 \(n\),一共有 \(\dfrac{\varphi(n)}{2}\) 个这样的对,和为 \(\dfrac{\varphi(n)n}{2}\)。

那么答案就成了 \(n\sum\limits_{d|n}\dfrac{\varphi(d)d}{2}\)。

这个东西是我六年级暑假学的(捂脸),然后现在全忘了(捂脸),是时候重新看一遍了(捂脸)。

//SIXIANG
#include <cstdio> 
#define MAXN 1000000
#define QWQ cout << "QWQ" << endl;
using namespace std;
int phi[MAXN + 10];
void getphi() {
	for(int p = 1; p <= MAXN; p++) phi[p] = p;
	for(int p = 2; p <= MAXN; p++)
		if(phi[p] == p)
			for(int i = p; i <= MAXN; i += p)
				phi[i] = phi[i] / p * (p - 1);
}
long long solve(int n) {
	long long ans = 0;
	for(int p = 1; p * p <= n; p++) {
		if(p == 1) {
			ans++;
			ans += 1ll * phi[n] * n / 2;
			continue;
		} 
		if(n % p == 0) {
			if(p * p == n) ans += 1ll * phi[p] * p / 2;
			else ans = ans + 1ll * phi[p] * p / 2 + 1ll * phi[n / p] * (n / p) / 2;
		}
	}
	return ans * 1ll * n;
}
signed main() {
	getphi();
	int T, n;
	scanf("%d", &T);//ios+cin 都过不去,scanf+printf 跑得飞起,懒狗落泪(╥╯^╰╥)
	for(int p = 1; p <= T; p++) {
		scanf("%d", &n);
		printf("%lld\n", solve(n));
	}
}

标签:gcd,limits,dfrac,sum,varphi,关于,做法,数学题,互质
From: https://www.cnblogs.com/thirty-two/p/16595732.html

相关文章

  • CSS-关于display:inline、block、inline-block的差别
    什么是display(显示模式)?每一个html标签元素都会有一个预设的display属性,标签基本上大部分可分为两种显示模式,一种是行内元素(inline),另一种为区块元素(block),我们可以......
  • 关于在 debian 里被 network-tools 托管后如何重连 WIFI 的问题。
    ifconfig、ifup、ifdown三个命令。如果修改了/etc/wpa_supplicant/wpa_supplicant.conf后想重连wifi需要强制down了waln0后在ifup就行了。ifdownwlan0--for......
  • 关于 mysql5.7 中 创建一个用户 并为其 grant 权限 操作失败的问题
    SQL:--创建授权canal账号具有slave权限--查看密码策略状态selectplugin_name,plugin_statusfrominformation_schema.pluginswhereplugin_namelike'val......
  • 关于子集问题的一种解法
    关于子集问题的一种解法1.引入给定\(n\)以及两个长度为\(2^n\)的序列\(a\)和\(b\),对于每个\(k\)求\(min_{i|j=k}{\{a_i+b_j\}}\)。对于这类不可逆的......
  • 关于read指向缓冲区的理解
    read在linux原型定义如下: #include<unistd.h>ssize_tread(intfd,void*buf,size_tcount);关于buf,man手册解释如下:“read()attemptstoreaduptocountby......
  • 关于swack.cn站点关停的通知
    由于运营精力及成本问题,本人决定无限期关停swack.cn站的公网服务,包括但不限于swack.cn、www.swack.cn以及相关的文件下载地址。一直以来swack.cn站的试运营本着无......
  • 关于生命的本质 复制
    生命的本质就是复制。那么,生命1.0的生命(单细胞生命),是选择性复制,比如,下一代,就是单纯的复制一下自己。如果,当前自己产生了变异,那变异是怎么来的,选择当自己某方面,强,或者不强,......
  • ES 增删改(关于文档的操作)
    1、create新增记录1.1新增记录不指定id,让es自动生成POSTlogs/_doc{"Level":"Warn","Content":"111"}结果如下:{"_index":"logs","_id":"Hd5v......
  • 关于操作系统中的stack
    操作系统中的stack。从freertos的手册中可以看到每个任务都需要有一个stackspace。Autosar的操作系统中配置也有同样的定义。这样做的必要性因为是多任务。任何一个task......
  • 关于Angular 管道中异步数据处理的方式
    管道使用就不赘述了,不清楚可以参考官方文档;1.新建一个service文件并添加一个异步请求,记得引入Injectable:   2.新建一个管道pipe文件,自定义管道,根据需求变更返回内......