P2398 GCD SUM

P2398 GCD SUM 欧拉函数 筛法素数, 欧拉函数 阅读详情

Label

欧拉函数

Description

给定整数n(1≤n≤105)n(1\leq n\leq 10^5)n(1≤n≤105),求:

∑i=1n∑j=1ngcd(i,j)\sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j)i=1∑n​j=1∑n​gcd(i,j)

Solution

看上去此题所求又是一个反演的形式(其实此题可用反演解),但我们可以利用欧拉函数来分析。

有了poj2480的基础,我们已经知道:∑i=1ngcd(i,n)=∑d∣ndφ(nd)\sum_{i=1}^{n}gcd(i,n)=\sum_{d|n}d\varphi(\frac{n}{d})i=1∑n​gcd(i,n)=d∣n∑​dφ(dn​),则易得:

∑i=1n∑j=1ngcd(i,j)=2∑i=1j∑j=1ngcd(i,j)−∑i=1ni=2∑i=1n∑d∣idφ(id)−∑i=1ni\sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j)=2\sum_{i=1}^{j}\sum_{j=1}^{n}gcd(i,j)-\sum_{i=1}^{n}i=2\sum_{i=1}^{n}\sum_{d|i}d\varphi(\frac{i}{d})-\sum_{i=1}^{n}ii=1∑n​j=1∑n​gcd(i,j)=2i=1∑j​j=1∑n​gcd(i,j)−i=1∑n​i=2i=1∑n​d∣i∑​dφ(di​)−i=1∑n​i

而∑i=1n∑d∣idφ(id)=∑d=1n∑i=1nφ(id)=∑d=1n∑i=1⌊nd⌋φ(i)\sum_{i=1}^{n}\sum_{d|i}d\varphi(\frac{i}{d})=\sum_{d=1}^{n}\sum_{i=1}^{n}\varphi(\frac{i}{d})=\sum_{d=1}^{n}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\varphi(i)i=1∑n​d∣i∑​dφ(di​)=d=1∑n​i=1∑n​φ(di​)=d=1∑n​i=1∑⌊dn​⌋​φ(i)

(此步化简:考虑所有可能的ddd的取值,进而考虑每种ddd对答案的贡献)

所以,∑i=1n∑j=1ngcd(i,j)=2(∑d=1n∑i=1⌊nd⌋φ(i))−n(n+1)2\sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j)=2(\sum_{d=1}^{n}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\varphi(i))-\frac{n(n+1)}{2}i=1∑n​j=1∑n​gcd(i,j)=2(d=1∑n​i=1∑⌊dn​⌋​φ(i))−2n(n+1)​

由于∑i=1⌊nd⌋φ(i)\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\varphi(i)∑i=1⌊dn​⌋​φ(i)可前缀和预处理,故算法整体复杂度为O(n)O(n)O(n)。

Code

#include<cstdio>
#include<iostream>
#define ri register int
#define ll long long
using namespace std;

const int MAXN=1e5+20;
int N,prime[MAXN>>2],phi[MAXN],cnt;
ll ans,sum[MAXN];
bool isprime[MAXN];

void Phi()
{
	isprime[1]=true; phi[1]=1;
	for(ri i=2;i<=N;++i)
	{
		if(!isprime[i])
		{
			prime[++cnt]=i;
			phi[i]=i-1;	
		}
		for(ri j=1;j<=cnt&&i*prime[j]<=N;++j)
		{
			isprime[i*prime[j]]=true;
			if(i%prime[j]==0)	phi[i*prime[j]]=phi[i]*prime[j];
			else	phi[i*prime[j]]=phi[i]*phi[prime[j]];
			if(i%prime[j]==0)	break;
		}
	}
}

int main()
{
	scanf("%d",&N);
	Phi();
	for(ri i=1;i<=N;++i)	sum[i]=sum[i-1]+(ll)phi[i];
	for(ri d=1;d<=N;++d)	ans+=(ll)d*sum[N/d];
	ans=ans*2LL-(ll)N*(ll)(N+1)/2LL;
	cout<<ans;
	return 0;
}
sysbench安装(在线&离线) sysbench下载、安装、编译和异常处理方法 阅读详情

相关推荐

AIGC实战指南:从提示词到工作流,掌握AI内容生成核心技能

人工智能生成内容(AIGC)作为当前AI技术的重要应用领域,其核心原理基于大语言模型(LLM)对海量数据的学习与模式识别。这项技术的价值在于将复杂的创作过程自动化,显著提升内容生产效率与创意实现的多样性。在实际应用中,AIGC已广泛渗透至文本创作、图像设计、音频合成及视频生成等多个场景,成为数字内容生产的重要工具。要高效运用AIGC,关键在于掌握提示词工程与模型微调等核心技能。例如,通过结构化提示词设计,可以精确引导模型生成符合预期的专业周报;而选择合适的微调模型,则能大幅提升图像生成的风格控制力与输出质量

weixin_26808439的博客 375

洛谷题目: P2398 GCD SUM 题解 (本题较难,省选-难度)

洛谷题目: P2398 GCD SUM 题解 (本题较难,省选-难度)

C++老手 1047

新手避坑指南:在MacBook上为PyTorch正确配置MPS环境,跑通第一个YOLOv8训练

本文详细指导新手如何在MacBook上为PyTorch正确配置MPS环境,并成功运行YOLOv8训练。从环境准备、PyTorch安装到YOLOv8配置和性能调优,提供全面的避坑指南和实用技巧,帮助开发者充分利用Mac的GPU加速能力。

weixin_29100399的博客 228

P2398 GCD SUM (三种思路)

题目链接:点击这里 题目大意: 给定正整数 nnn 求: ∑i=1n∑j=1ngcd⁡(i,j)\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)i=1∑n​j=1∑n​gcd(i,j) 题目分析: 方法一: 用莫比乌斯反演化简式子可以得到: ∑i=1n∑j=1ngcd⁡(i,j)\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)i=1∑n​j=1∑n​gcd(i,j) =∑x=1n⌊nx⌋⌊nx⌋φ(x)=\sum_{x=1}^n \lfloor \frac nx \rf

羊驼的博客 1336

SDI-12协议与STM32 进行uart通信

其中DIR_OUT_SDI是一个IO引脚,控制UART_TX_SDI是否使能,U10是三态门IC,即拉低DIR_OUT_SDI使能stm32输出,拉高DIR_OUT_SDI失能输出,串口配置8位数据位,偶校验,1位停止位,1200波特率。示波器测试得到传感器的应答信号如下:第一个是唤醒信号,拉高电平13毫秒,之后保持20毫秒低电平,第二个数据帧是激活信号,即ascii码: "0!",第三个是传感器的应答信号:"0\r\n"

weixin_42186805的博客 4402

基于 ESP32 的智能药盒提醒装置设计与实现

本装置基于 ESP32 实现了智能药盒的核心功能,硬件选型兼顾成本与实用性,软件设计模块化、易拓展。后续可通过 ESP32 的 WiFi 模块接入物联网平台(如阿里云、OneNet),实现远程设置提醒、服药状态反馈等功能,进一步提升智能化水平。该装置能有效解决老人忘服药问题,具有较高的实用价值与推广潜力。

weixin_42300449的博客 1045

P2398 GCD SUM(莫比乌斯反演)

题目传送门 前置知识: 本题应用到的迪利克雷卷积 推导过程如下: 因此用O(n)的算法就可以AC本题 #include<iostream> using namespace std; typedef long long ll; const int N=1e5+10; int primes[N], cnt; // primes[]存储所有素数 int euler[N]; // 存储每个数的欧拉函数 bool st[N]; // st[x]存储x是否被筛

m0_51841071的博客 224

ClaudeCode入门01-环境安装(小白入门:手把手教你配置,超简单的一种接入方式)

文手把手教你从零搭建 Claude Code 开发环境。针对国内网络现状,我们采用 OpenRouter + Claude Code Router 的方案,支持支付宝/微信充值,无需科学上网即可完成配置。内容涵盖 Node.js 安装(macOS/Windows/Linux)、OpenRouter 注册与充值、Claude Code 和 Router 安装配置,以及一键启动脚本的编写。跟着截图一步步操作,10分钟搞定全部环境!

yueyeguzhuo的专栏 280

gcd-洛谷P2398 GCD SUM

https://www.luogu.org/problem/show?pid=2398 很有意思的题目; 这种题特别好; 代码不长,思路不浅; 题解细细看能看懂; AC之后有所收获; 我们设f[i]表示gcd为i的对数; 那么对答案的贡献就是f[i]*i; 怎么求f[i]呢; 我们看 包含i的因子的数是不是有(n/i)个; 那显然包含i因子的两个数 的...

weixin_30511107的博客 250

openclaw : 无法将“openclaw”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 解决方案

本文主要介绍了openclaw : 无法将“openclaw”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案,希望能对使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

新能源汽车电机交流电流测量系统精度全链路分析

通过全链路误差建模与瓶颈分析,结合硬件选型优化与软件算法补偿,可将系统精度从4.2%提升至≤1% FS。本文所述方法论已应用于某800V电驱平台开发,实测电流控制精度达±0.8%,为高性能电机控制奠定基础。为例,深入剖析从互感器采集到CAN报文解析的全链路信号处理流程,揭示各环节误差来源及对最终精度的影响,为研发测试提供理论支撑。:±0.1%(电阻温漂与运放开环增益限制):运放增益带宽积(GBW)不足导致高频衰减。:±0.02%/℃(铁氧体材料温敏特性):±0.5%读数(磁芯饱和效应)

优快云-新能源汽车研发测试专业博主 1493

洛谷 P2398 GCD SUM

摘要 本文研究了洛谷P2398题"GCD SUM",通过数论中的欧拉函数性质,将双重求和问题转化为单重求和问题。利用欧拉函数的性质n=∑φ(d)(d|n),将原问题转换为∑(⌊n/d⌋²·φ(d)),其中1≤d≤n。采用线性筛法高效预处理1到n的欧拉函数值,算法复杂度为O(n)。最终实现简洁高效,仅需遍历一次即可求得结果。该解法展示了数论知识在实际问题中的应用价值,特别适合处理大规模数据情况下的gcd求和问题。

君义NOIP的博客 920

K8s(二十一):在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

🔴 K8s(二十一):在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3万+

P2398 GCD SUM 题解

求i1∑n​j1∑n​gcdij。

一只小蒟蒻的博客 333

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Luogu】P2398 GCD SUM (容斥原理求gcd为k的数对个数)

令 f[i] 代表以 i 为最大公因数的数对,g[k] 为满足 k | gcd(x,y) 的对数。显然 g[i] = f[i] + f[2*i] + f[3*i] + ... + f[m*i]故得 f[i] = cnt² - f[2*i] - f[3*i] - ... - f[m*i]不难看出 g[i] = cnt²,其中 cnt 代表 i 的倍数,其值为 n / i。模拟即可,复杂度约为 O(N·ln(n))

qq_61422664的博客 309

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【洛谷P2398】GCD SUM

题目大意:求 \[\sum\limits_{i=1}^n\sum\limits_{j=1}^ngcd(i,j)\] 题解: 最重要的一步变换在于。 \[\sum\limits_{k=1}^n k \sum\limits_{d=1}^{\lfloor{n\over k}\rfloor}\mu(d)\lfloor{n\over kd}\rfloor\lfloor{n\over kd}\rfl...

K1385170的博客 281

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

luogu P2398 GCD SUM

题目传送门:https://www.luogu.org/problemnew/show/P2398题意:求。思路:以下摘自大佬的blog:Candy?。很详细,容易看懂。打个欧拉函数+前缀和预处理+整除分块即可。代码(自己的):#include&lt;cstdio&gt; #include&lt;algorithm&gt; #define LL long long using namespace ...

zsyz_ZZY的博客 322

洛谷 P2398 GCD SUM 题解

题面 挺有意思的。 设f[i]表示gcd(i,j)=i的个数,g[i]表示k|gcd(i,j)的个数; g[i]=(n/i)*(n/i); g[i]=f[i]+f[2i]+f[3i]+...; 所以f[i]=g[i]-f[2i]-f[3i]-f[4i]-...... #include <bits/stdc++.h> #define int long long...

weixin_30437481的博客 223

【欧拉函数】 P2568 GCD P2398 GCD SUM

欧拉函数

weixin_62528401的博客 211

Luogu p2398 GCD SUM

题目链接 https://www.luogu.com.cn/problem/P2398 问题分析: 代码如下: #include <bits/stdc++.h> #define ll long long using namespace std; const int maxn = 1e5 + 10; int phi[maxn]; int primes[maxn]; ll sum[maxn]; int cnt = 0; ll n; void init() { phi[1] = 1;

zhy_cx的博客 143

【数论】GCD SUM(P2398)

给出n,求$$\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)$$

ssllyf的博客 566

打卡信奥刷题(2594)用C++实现信奥题 P2398 GCD SUM

题目P2398要求计算1到n范围内所有数对的GCD之和。通过欧拉函数预处理和数论分块优化,可以高效求解。C++实现先线性筛法计算欧拉函数,再利用前缀和数组进行分块累加,最终时间复杂度为O(n)。样例输入2时输出5,验证了正确性。该解法适用于n≤10^5的情况,兼顾了效率与准确性。文章还提到后续将持续分享算法竞赛相关实现和心得。

Loge谈信奥--一个专注于信奥人的博客 249

洛谷P2398 GCD SUM

求 思路:n很大,没有办法暴力去计算.想要比较快速地计算,必须要按照gcd的值进行分类. 我们称anskans_kansk​为gcd(i,j)=k的数目gcd(i,j)=k的数目gcd(i,j)=k的数目. gcd(i,j)=k,gcd(i/k,j/k)=1.gcd(i,j)=k,gcd(i/k,j/k)=1.gcd(i,j)=k,gcd(i/k,j/k)=1. 那么显然i,j就是k的若干倍,令i=a∗k,j=b∗ki,j就是k的若干倍,令i=a*k,j=b*ki,j就是k的若干倍,令i=a∗k,j=b∗k

qq_36018057的博客 321
上一篇: poj2480 Longge‘s problem
下一篇: CF1500B(Div.1) Two chandeliers
guapi2333
博客等级 码龄9年 7粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值