poj2480 Longge‘s problem

基于容斥原理解决的有限制不定方程非负整数解(多重集组合数)计数问题 阅读详情

Label

欧拉函数

Description

给定多个正整数n(1<n<231)n(1<n<2^{31})n(1<n<231),请求出:
∑i=1ngcd(i,n)\sum_{i=1}^{n}gcd(i,n)i=1∑n​gcd(i,n)

Solution

由于直接枚举iii暴力求肯定会TLE,故我们不考虑iii的取值对答案的贡献,而是考虑每一种gcd(i,n)gcd(i,n)gcd(i,n)的取值对答案的贡献。

设gcd(i,n)=dgcd(i,n)=dgcd(i,n)=d,那么每一个满足该条件的数iii一定满足如下性质:

gcd(i,n)=d↔gcd(id,nd)=1gcd(i,n)=d\leftrightarrow gcd(\frac{i}{d},\frac{n}{d})=1gcd(i,n)=d↔gcd(di​,dn​)=1

这样一来,又出现了互质的条件,那么,满足上述条件的iii的个数便为∑i=1n[gcd(id,nd)==1]=φ(⌊nd⌋)\sum_{i=1}^{n}[gcd(\frac{i}{d},\frac{n}{d})==1]=\varphi(\lfloor \frac{n}{d}\rfloor)∑i=1n​[gcd(di​,dn​)==1]=φ(⌊dn​⌋)。

所以,ddd对答案的贡献为dφ(⌊nd⌋)d\varphi(\lfloor \frac{n}{d}\rfloor)dφ(⌊dn​⌋)。

由于gcd(i,n)=dgcd(i,n)=dgcd(i,n)=d,故所有ddd的取值构成的集合等于nnn的约数集合,所以:
∑i=1ngcd(i,n)=∑d∣ndφ(⌊nd⌋)\sum_{i=1}^{n}gcd(i,n)=\sum_{d|n}d\varphi(\lfloor \frac{n}{d}\rfloor)i=1∑n​gcd(i,n)=d∣n∑​dφ(⌊dn​⌋)

最后注意两点:

1、如何枚举ddd:O(n)O(\sqrt n)O(n​)做法枚举nnn的正约数即可。

2、nnn太大:预处理出一部分φ(n)\varphi(n)φ(n),剩下的部分O(n)O(\sqrt n)O(n​)单独求。

总体复杂度:看起来是O(n)O(n)O(n)的,但由于我们预处理出相当数量的φ(n)\varphi(n)φ(n)且整数的约数个数远远达不到2n2\sqrt n2n​的理论上界,所以复杂度可行。

Summary

两条重要性质:

1、gcd(i,n)=d↔gcd(id,nd)=1gcd(i,n)=d\leftrightarrow gcd(\frac{i}{d},\frac{n}{d})=1gcd(i,n)=d↔gcd(di​,dn​)=1

2、∑i=1ngcd(i,n)=∑d∣ndφ(⌊nd⌋)\sum_{i=1}^{n}gcd(i,n)=\sum_{d|n}d\varphi(\lfloor \frac{n}{d}\rfloor)∑i=1n​gcd(i,n)=∑d∣n​dφ(⌊dn​⌋)

Code

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

const int MAXN=5e6;
int cnt;
ll N,prime[MAXN>>2],phi[MAXN+20],phia,phib,ans;
bool isprime[MAXN+20];

ll Phi(ll x)//求phi(x)一般用利用容斥原理推出的公式,复杂度O(sqrt(n)) 
{
	register ll phix=x;
	for(ll i=2;i*i<=x;++i)
		if(x%i==0)
		{
			phix=phix/i*(i-1);
			while(x%i==0)	x/=i;
			
		}
	if(x>1)	phix=phix/x*(x-1);
	return phix;
}

void Phi()//O(n)求1~N的欧拉函数 
{
	isprime[1]=true; phi[1]=1LL;
	for(ri i=2;i<=MAXN;++i)
	{
		if(!isprime[i])
		{
			prime[++cnt]=(ll)i;
			phi[i]=(ll)i-1;	
		}
		for(ri j=1;j<=cnt&&i*(int)prime[j]<=MAXN;++j)
		{
			isprime[i*(int)prime[j]]=true;
			if(i%prime[j]==0)	phi[i*(int)prime[j]]=phi[i]*prime[j];
			else	phi[i*(int)prime[j]]=phi[i]*phi[prime[j]];
			if(i%prime[j]==0)	break;
		}
	}
}

int main()
{
	Phi();
	while(~scanf("%lld",&N))
	{
		ans=0;
		for(ll i=1;i*i<=N;++i)
		{
			if(N%i==0)
			{
				if(i<=MAXN)	phia=phi[(int)i];
				else	phia=Phi(i);
				if(N/i<=MAXN)	phib=phi[(int)(N/i)];
				else	phib=Phi(N/i);
				if(i!=N/i)	ans+=N/i*phia+i*phib;
				else	ans+=i*phia;
			}
		}
		cout<<ans<<'\n';
	}
	return 0;
}
P1072 [NOIP2009 提高组] Hankson 的趣味题 gcd与lcm的算术基本定理表现形式 阅读详情

相关推荐

国密系列算法简介

众所周知,为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。目前,这些算法已广泛应用于各个领域中,期待有一天会有采用国密算法的区块链应用出现。其中SM1、SM7算法不公开,调用该...

HardessGod的博客 5777

[欧拉函数][gcd]Longge‘s problem POJ2480

Longge is good at mathematics and he likes to think about hard mathematical problems which will be solved by some graceful algorithms. Now a problem comes: Given an integer N(1 < N < 2^31),you are to calculate ∑gcd(i, N) 1<=i <=N. "Oh, I know,

Cloth的博客 354

从‘最速控制’到代码:深入拆解韩京清ADRC中TD跟踪器的fhan函数(含Matlab/Simulink实例)

本文深入解析韩京清ADRC中的fhan函数,从理论到代码实现,详细拆解其在Matlab/Simulink中的应用。通过分析最速控制问题和非线性TD的连续形式,揭示fhan函数在信号处理和噪声抑制中的独特优势,并提供工程实践中的参数整定和优化技巧。

weixin_42659194的博客 247

POJ - 2480 Longge‘s problem (欧拉函数)

题目链接:点击这里 题目大意: 给定正整数 n(1<n<231−1)n(1<n<2^{31}-1)n(1<n<231−1) ,求: ∑i=1ngcd⁡(i,n)\sum_{i=1}^n\gcd(i,n)i=1∑n​gcd(i,n) 题目分析: ∑i=1ngcd⁡(i,n)\sum_{i=1}^n\gcd(i,n)i=1∑n​gcd(i,n) =∑d∣n∑i=1n[gcd⁡(i,n)=d]⋅d=\sum_{d|n}\sum_{i=1}^n[\gcd(i,n)=d]·d=d∣

羊驼的博客 477

小红书高时效推荐系统背后的技术升级

在小红书 APP 中,推荐系统的实效性对推荐效果有着特别重要的影响,特别是作为 UGC 平台,小红书的推荐系统如果能更快地捕捉用户与笔记之间的变化和联系,就能够给推荐带来更好的效果。在2021年上半年,首页推荐的召回、粗排、精排的主要模块都保持在天级更新的状态,我们通过持续迭代,将召回 CF 渠道、召回索引更新、召回模型/粗精排模型的训练都做到了分钟级更新,为首页推荐的分发效率带来飞跃式提升,并给业务侧带来非常显著的收益。 小红书站内“最近一天内发布的新笔记”在首页的曝光占比一直很高,这段时间更是快速

REDtech_1024的博客 3523

innovus 命令每日精要 | 掌控Innovus布线的利器——setNanoRouteMode详解

在数字IC后端设计的复杂世界里,布线优化是至关重要的一步。今天,我来给大家深入讲解Innovus工具中setNanoRouteMode命令的精妙之处,让你轻松驾驭布线策略,提升设计质量。setNanoRouteMode是Innovus中用于配置NanoRoute绕线行为的关键命令。通过其丰富的参数,你可以精细控制布局后阶段的绕线策略、信号完整性优化、工艺适配及设计规则修复等流程。下面,我将按功能分类总结其核心选项,并针对不同场景给出建议。

weixin_50820814的博客 3528

POJ-2480-Longge‘s problem(欧拉函数)

Longge’s problem Longge is good at mathematics and he likes to think about hard mathematical problems which will be solved by some graceful algorithms. Now a problem comes: Given an integer N(1 < N < 2^31),you are to calculate ∑gcd(i, N) 1<=i <

qq_43461168的博客 302

ROS2 -Jazzy 一步一步(第一步_工作空间以及编译)

文件夹作用特点是否需要手动创建/维护src存放自己写的 ROS 2 包一个 workspace 可以有多个包需要手动创建build保存编译过程中的中间文件每个包生成对应子目录自动生成,可删除install保存编译完成后的功能包每个包有独立子目录,含可执行文件自动生成,可删除log保存编译日志用于查看错误原因、调试自动生成,不需修改colcon是 ROS 2 推荐使用的构建工具自动处理功能包的依赖和编译顺序一条命令就能编译整个工作空间。

jerrykorea的博客 1380

(POJ - 2480)Longge‘s problem(欧拉函数)

题目链接:2480 -- Longge's problem 题意:给定一个N,求∑gcd(i, N) 1<=i <=N 分析:对于gcd(x,N)=y有gcd(x/y,N/y)=1,这两者是一一对应的,换句话说有多少个数x满足x/y与N/y互质,就有多少个gcd(x,N)=y,所以对于最大公约数gcd(x,N)=y所做的贡献就是y*o(N/y),(o代表是欧拉函数),所以我们就是要枚举N的每个因子,然后求其另一个因子的欧拉函数,最后求乘积和即可。 下面是代码: #include<

AC__dream的博客 321

机器人关节电机发热难题:从工程化角度拆解热管理解决方案(下)

摘要:本文系统分析了机器人关节电机与驱动系统的热管理方案,重点解决局部热点问题。针对不同功率场景提出了热管/均热板散热(适用于中小功率)和液冷散热(适用于高功率)的具体实施方案,详细比较了结构参数、材料选择、安装工艺和散热效果。特别强调了电机-驱动协同热管理的重要性,提出"工况联动+热路径共享"的核心理念,包括一体化散热结构设计和动态控制策略。最后介绍了热仿真与测试验证方法,确保方案的有效落地。通过系统级热管理,可显著降低温升(热点区域降温30-60℃),同时优化体积和能耗。

bother3000的博客 3329

【漏洞复现】Palo Alto Networks PAN-OS GlobalProtect 命令注入漏洞 CVE-2024-3400

在特定PAN-OS版本和不同功能配置下,未经身份验证的攻击者可能利用此漏洞在防火墙上以root权限执行任意代码。技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。本文所提供的工具仅用于学习,禁止用于其他!poc如下,注入点在Cookie中,将其中的DNSlog地址替换为你的dnslog地址,借助DNSLOG来复现,可以使用http://dnslog.pw/

失心少年 1225

POJ - 2480 Longge‘s problem(积性函数+欧拉函数)

传送门 gcd(x,n)gcd(x,n)gcd(x,n) 当nnn固定时,该函数是积性函数,因为对nnn质因数分解得到p1a1p2a2...pnanp_1^{a_1}p_2^{a_2}...p_n^{a_n}p1a1​​p2a2​​...pnan​​,那么gcd(x,n)=gcd(x,p1a1)∗gcd(x,p2a2)...gcd(x,pnan)gcd(x,n)=gcd(x,p_1^{a_1})*gcd(x,p_2^{a_2})...gcd(x,p_n^{a_n})gcd(x,n)=gcd(x,p1a1​

Happig的博客 230

基于STM32设计的智能井盖(Lora组网+4G上云)_423

设计并实现了一种基于 STM32 与 Lora 通信技术的智能井盖监测系统。系统采用 STM32F103C8T6 作为核心控制器,在井盖节点端集成水位检测、有害气体检测、倾斜角度检测以及 GPS 定位等功能模块,对井盖内部环境状态和姿态变化进行实时监测。各井盖节点通过 Lora 无线通信方式组成网络,将采集的数据发送至主机(网关)进行汇聚处理。

719

POJ 2480 积性函数

题意 传送门 POJ 2480 Longge’s problem 题解 求 ∑1≤i≤ngcd(i,n)\sum\limits_{1\leq i\leq n}gcd(i,n)1≤i≤n∑​gcd(i,n) 暴力枚举显然超时,考虑到 gcd(i,N)gcd(i,N)gcd(i,N) 的值域规模较小,将相同最大公约数的情况合并计算。d=gcd(i,n)=d×gcd(i/d,n/d)d=gcd(i,n)=d\times gcd(i/d,n/d)d=gcd(i,n)=d×gcd(i/d,n/d),可得 gcd(i/

neweryyy的博客 233

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

POJ 2480 Longge's problem

2016暑期集训2-IPOJ 2480 Longge’s problem数论,欧拉函数变形 传送门:HustOJ 传送门:POJ

P.H.S 387

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

POJ 2480 Longge's problem 积性函数

题目来源:POJ 2480 Longge's problem 题意:求i从1到n的gcd(n, i)的和 思路:首先假设m, n 互质 gcd(i, n*m) = gcd(i, n)*gcd(i, m) 这是一个积性函数积性函数的和还是积性函数 由欧拉函数知识得 phi(p^a) = p^a - p^(a-1) p是素数 a是正整数 得到终于答案f(n) = f...

weixin_30496751的博客 86

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

poj2480Longge's problem数论积性函数

Longge’s problem Longge is good at mathematics and he likes to think about hard mathematical problems which will be solved by some graceful algorithms. Now a problem comes: Given an integer N(1 &l...

Jamence的博客 715

POJ 2480 : Longge\'s problem - gcd之和

题意:给出正整数n,计算所有gcd(i,n)   (1分析: 在数论中的积性函数概念:对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时f(ab)=f(a)f(b),在数论上就称它为积性函数。若对于某积性函数 f(n) ,就算a, b不互质,也有f(ab)=f(a)f(b),则称它为完全积性的。 gcd(i,m*n)=gcd(i,m) * gcd(i,n),m,n互质,故gcd

Booky的专栏 590

POJ 2480 Longge's problem (欧拉函数)

Longge’s problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8107 Accepted: 2680Description Longge is good at mathematics and he likes to think about hard mathematical proble

滴水穿石,慢慢积累,总会有成果 566

POJ2480——Longge's problem(数论,欧拉函数d)

题目: Longge's problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8050   Accepted: 2666 Description Longge is good at mathematics and he likes to t

say_c_box的博客 1067

线性筛(P3383 【模板】线性筛素数)

线性筛学习

guapi2333的博客 863

CF1500B(Div.1) Two chandeliers

EXCRT+二分答案

guapi2333的博客 362

P2158 [SDOI2008]仪仗队&&欧拉函数的求法

欧拉函数(此处将此题作为欧拉函数模板套路题分析)

guapi2333的博客 284

P1641 [SCOI2010]生成字符串

这个题的公式: 具体做法在洛谷的题解中描述的十分详细。 但我们要注意的一点的是:由于答案取模,故直接对上式的每一项取模后在相减的话,容易出现负数(显然,a&gt;b并不代表a%p &gt; b%p)。这时的答案应该是:。即对以上的ans做如下操作: 整个的题的处理方法就十分明了了。 代码: #include&lt;cstdio&gt; #include&lt;iostream&...

guapi2333的博客 270

(杜教筛)P4213 【模板】杜教筛(Sum)

杜教筛基本原理及一个模板题

guapi2333的博客 249

P2398 GCD SUM

欧拉函数

guapi2333的博客 242
上一篇: P2568&&bzoj2818 GCD
下一篇: P2398 GCD SUM
guapi2333
博客等级 码龄9年 7粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值