P2257 YY的GCD

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

Label

灵活变换求和次序的普通莫比乌斯反演

Description

给定T(T=104)T(T=10^4)T(T=104)组n,m(1≤n,m≤107)n,m(1\leq n,m\leq 10^7)n,m(1≤n,m≤107),求:

​ ∑i=1n∑j=1m[(i,j)∈prime]\sum_{i=1}^{n}\sum_{j=1}^{m}[(i,j)\in prime]i=1∑n​j=1∑m​[(i,j)∈prime]

Solution

∑i=1n∑j=1m[(i,j)∈prime]\sum_{i=1}^{n}\sum_{j=1}^{m}[(i,j)\in prime]i=1∑n​j=1∑m​[(i,j)∈prime]

=∑p∈primep≤min(n,m)∑i=1n∑j=1m[(i,j)=p]=\sum_{p\in prime}^{p\le min(n,m)}\sum_{i=1}^{n}\sum_{j=1}^{m}[(i,j)=p]=p∈prime∑p≤min(n,m)​i=1∑n​j=1∑m​[(i,j)=p]

=∑p∈primep≤min(n,m)∑i=1⌊np⌋∑j=1⌊mp⌋[(i,j)=1]=\sum_{p\in prime}^{p\le min(n,m)}\sum_{i=1}^{\lfloor\frac{n}{p}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{p}\rfloor}[(i,j)=1]=p∈prime∑p≤min(n,m)​i=1∑⌊pn​⌋​j=1∑⌊pm​⌋​[(i,j)=1]

=∑p∈primep≤min(n,m)∑i=1⌊np⌋∑j=1⌊mp⌋∑d∣(i,j)μ(d)=\sum_{p\in prime}^{p\le min(n,m)}\sum_{i=1}^{\lfloor\frac{n}{p}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{p}\rfloor}\sum_{d|(i,j)}\mu(d)=p∈prime∑p≤min(n,m)​i=1∑⌊pn​⌋​j=1∑⌊pm​⌋​d∣(i,j)∑​μ(d)

=∑p∈primep≤min(n,m)∑d=1min(⌊np⌋,⌊mp⌋)μ(d)∑i=1⌊np⌋∑j=1⌊mp⌋[d∣(i,j)]=\sum_{p\in prime}^{p\le min(n,m)}\sum_{d=1}^{min(\lfloor\frac{n}{p}\rfloor,\lfloor\frac{m}{p}\rfloor)}\mu(d)\sum_{i=1}^{\lfloor\frac{n}{p}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{p}\rfloor}[d|(i,j)]=p∈prime∑p≤min(n,m)​d=1∑min(⌊pn​⌋,⌊pm​⌋)​μ(d)i=1∑⌊pn​⌋​j=1∑⌊pm​⌋​[d∣(i,j)]

=∑p∈primep≤min(n,m)∑d=1min(⌊np⌋,⌊mp⌋)μ(d)∑i=1⌊npd⌋∑j=1⌊mpd⌋=\sum_{p\in prime}^{p\le min(n,m)}\sum_{d=1}^{min(\lfloor\frac{n}{p}\rfloor,\lfloor\frac{m}{p}\rfloor)}\mu(d)\sum_{i=1}^{\lfloor\frac{n}{pd}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{pd}\rfloor}=p∈prime∑p≤min(n,m)​d=1∑min(⌊pn​⌋,⌊pm​⌋)​μ(d)i=1∑⌊pdn​⌋​j=1∑⌊pdm​⌋​

=∑p∈primep≤min(n,m)∑d=1min(⌊np⌋,⌊mp⌋)μ(d)⌊npd⌋⌊mpd⌋(1)=\sum_{p\in prime}^{p\le min(n,m)}\sum_{d=1}^{min(\lfloor\frac{n}{p}\rfloor,\lfloor\frac{m}{p}\rfloor)}\mu(d)\lfloor\frac{n}{pd}\rfloor\lfloor\frac{m}{pd}\rfloor(1)=p∈prime∑p≤min(n,m)​d=1∑min(⌊pn​⌋,⌊pm​⌋)​μ(d)⌊pdn​⌋⌊pdm​⌋(1)

我们按照常规反演处理方法化简到这里时不难发现:后面的这个式子虽然可以数论分块处理,但此题的数据范围来讲,最前面求和符号代表的枚举素数操作的复杂度无法令人接受。此处,我们必须将素数求和号拿到式子后面去。

事实上,如果把ddd的求和号提到最前面,后面的⌊npd⌋⌊mpd⌋\lfloor\frac{n}{pd}\rfloor\lfloor\frac{m}{pd}\rfloor⌊pdn​⌋⌊pdm​⌋的计算还是无法避开枚举素数。事实上,最好的处理办法是:将原式改写为第一层求和符号枚举pdpdpd的式子。

考虑在当前最简式=∑p∈primep≤min(n,m)∑d=1min(⌊np⌋,⌊mp⌋)μ(d)⌊npd⌋⌊mpd⌋=\sum_{p\in prime}^{p\le min(n,m)}\sum_{d=1}^{min(\lfloor\frac{n}{p}\rfloor,\lfloor\frac{m}{p}\rfloor)}\mu(d)\lfloor\frac{n}{pd}\rfloor\lfloor\frac{m}{pd}\rfloor=p∈prime∑p≤min(n,m)​d=1∑min(⌊pn​⌋,⌊pm​⌋)​μ(d)⌊pdn​⌋⌊pdm​⌋里p,dp,dp,d的含义:枚举素数的同时,我们又枚举所有ppp的倍数pdpdpd。所以,考虑当pd=ipd=ipd=i时,p,dp,dp,d需满足什么条件才使得其对⌊ni⌋⌊mi⌋\lfloor\frac{n}{i}\rfloor\lfloor\frac{m}{i}\rfloor⌊in​⌋⌊im​⌋有贡献,我们可以直接将(1)式变换成如下式子:

​ ∑i=1n⌊ni⌋⌊mi⌋∑p∈prime,p∣ip≤iμ(⌊ip⌋)(2)\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor\lfloor\frac{m}{i}\rfloor\sum_{p\in prime,p|i}^{p\leq i}\mu(\lfloor\frac{i}{p}\rfloor)(2)i=1∑n​⌊in​⌋⌊im​⌋p∈prime,p∣i∑p≤i​μ(⌊pi​⌋)(2)

(其实上述式子pd(=i)pd(=i)pd(=i)下界应为2,但pd=1pd=1pd=1时对应的项值为0,对答案无影响。事实上,(从某篇文章中看到的)我们通过变换求和次序的好处之一就在于:大大省略了对答案无影响的0项的枚举计算。)

对于∑p∈prime,p∣ip≤iμ(⌊ip⌋)\sum_{p\in prime,p|i}^{p\leq i}\mu(\lfloor\frac{i}{p}\rfloor)∑p∈prime,p∣ip≤i​μ(⌊pi​⌋),在O(n)O(n)O(n)预处理出μ(1)∼μ(n)\mu(1)\sim \mu(n)μ(1)∼μ(n)的值后,可利用未经优化的埃氏筛预处理。之后便可对(2)式进行数论分块。

算法时间复杂度:O(nloglogn)O(nloglogn)O(nloglogn)(瓶颈在于埃氏筛)。

Code

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

const int MAXN=1e7+20;
int T,N,M,prime[MAXN],cnt,mu[MAXN];
ll sum[MAXN],ans;
bool notprime[MAXN];

void Eulasieve()
{
	mu[1]=1,notprime[1]=true;
	for(ri i=2;i<=MAXN;++i)
	{
		if(!notprime[i]) prime[++cnt]=i,mu[i]=-1;
		for(ri j=1;j<=cnt&&i*prime[j]<=MAXN;++j)
		{
			notprime[i*prime[j]]=true;
			if(i%prime[j]==0) break;
			else mu[i*prime[j]]=-mu[i];
		}
	}
}

void Estsieve()
{
	sum[1]=0;
	for(ri i=2;i<=MAXN;++i)
		if(!notprime[i])
			for(ri j=1;i*j<=MAXN;++j) sum[i*j]+=(ll)mu[j];
	for(ri i=1;i<=MAXN;++i) sum[i]=sum[i-1]+sum[i];
}

int main()
{
	std::ios::sync_with_stdio(false);
	Eulasieve(),Estsieve();
	cin>>T;
	for(ri op=1;op<=T;++op)
	{
		cin>>N>>M;
		if(N>M) swap(N,M);
		ans=0LL;
		for(ri l=2,r;l<=N;l=r+1)
		{
			r=min(N/(N/l),M/(M/l));
			ans+=(ll)(N/l)*(ll)(M/l)*(sum[r]-sum[l-1]);
		}
		cout<<ans<<'\n';
	}
	return 0;
}
P1072 [NOIP2009 提高组] Hankson 的趣味题 gcd与lcm的算术基本定理表现形式 阅读详情

相关推荐

告别SendKeys!用DD驱动级模拟在Windows 10/11上实现真·后台键鼠操作(Python实战)

本文详细介绍了如何使用DD驱动级模拟技术在Windows 10/11上实现真后台键鼠操作,解决传统方法如pyautogui和SendKeys的局限性。通过Python实战案例,展示了驱动级模拟在游戏自动化、RPA等场景中的高效应用,包括环境配置、核心API解析及高级优化技巧。

weixin_42519985的博客 799

洛谷 P2257 YY的GCD 莫比乌斯反演

P2257 YY的GCD 学习数论之莫比乌斯反演、杜教筛推荐:peng-ym 推理: 令:                                                                                             我们要求的是:                                                ...

ccsu_cat 380

Sentaurus TCAD学习——Scheme编程语言

sentaurus scheme语言学习记录

摸摸小熊猫的博客 964

洛谷 P2257 YY的GCD

洛谷 P2257 YY的GCD \(solution:\) 这道题完全跟[POI2007]ZAP-Queries (莫比乌斯反演+整除分块) 用的一个套路。 我们可以列出答案就是要我们求: \(ans=\sum_{p\in prime}\sum_{i=1}^{n}{\sum_{j=1}^{m}{[gcd(i,j)==p]}}\) 我们发现后面那一部分(\(\sum_{i=1}^{n}{\su...

weixin_30656145的博客 101

华北理工大学以升实验班蓝桥杯选拔赛题解

文章目录华北理工大学以升实验班蓝桥杯选拔赛题解A:期末考试题目描述题目讲解代码B:月份题目描述题目讲解代码C:打饭题目描述题目讲解代码D : 正弦波信号题目描述题目讲解代码E : 亲爱的长方形题目描述题目讲解代码F:挖金子题目描述题目讲解代码G : 金金的游戏题目描述题目讲解代码H : 区间和题目描述题目讲解代码详细视频讲解请关注华北理工大学b站账号。 华北理工大学以升实验班蓝桥杯选拔赛题解 A:期末考试 题目描述 Description 期末考试过去许多天了,如今成绩都出来了,那么现在让我们对成绩我分个类

Qq1739206233的博客 1127

WGCNA分析中那些没人告诉你的坑:以肺结核差异基因模块筛选为例

本文深入探讨WGCNA分析在肺结核差异基因模块筛选中的七个关键陷阱,包括soft-thresholding选取、样本离群值检测、模块合并阈值调整等。通过实际案例和R代码示例,揭示生信数据挖掘中常被忽视的技术细节,帮助研究者避免常见错误,提升分析结果的可靠性和生物学意义。

weixin_29218509的博客 261

P2257 YY的GCD (莫比乌斯反演)

P2257 YY的GCD 思路 求∑i=nn∑j=1mgcd(i,j)==k(k∈prime)\sum_{i = n} ^{n} \sum_{j = 1} ^{m} gcd(i, j) == k (k \in prime)∑i=nn​∑j=1m​gcd(i,j)==k(k∈prime) 对上面式子进行化简: =∑k=1n∑i=1nk∑j=1mkgcd(i,j)==1,k∈prime= \sum_{k = 1} ^{n} \sum_{i = 1} ^{\frac{n}{k}}\sum_{j = 1} ^{\f

lifehappy 323

Nacos漏洞利用工具V3.0.5实战:从认证绕开到内存马植入的全流程指南

本文详细解析了Nacos漏洞利用工具V3.0.5在实战中的应用,从认证绕开到内存马植入的全流程。文章深入探讨了如何利用Nacos的历史漏洞,如默认口令、认证逻辑绕过、Derby SQL注入及Jraft反序列化,实现权限提升与持久化控制,并提供了防御视角与加固建议,旨在帮助安全人员理解攻击链以加强防护。

h6j7k8l9p0的博客 483

P2257 YY的GCD 题解(莫比乌斯反演)

P2257 YY的GCD 题解 题解:https://www.luogu.org/problemnew/solution/P2257 #include<bits/stdc++.h> using namespace std; const int N=1e7+5; typedef long long ll; ll sum[N]; int vis[N]; int prime[N],mu...

天真有邪的博客 251

使用ArcGIS Pro进行土地利用分类的机器学习与深度学习

传统的土地利用分类方法通常依赖于手动解译和规则定义,但随着机器学习和深度学习的发展,我们现在可以利用这些技术来自动化和提高分类的精度。ArcGIS Pro是一种功能强大的GIS软件,它提供了丰富的工具和功能,可以支持土地利用分类的机器学习和深度学习。我们将首先讨论数据准备和预处理的步骤,然后介绍常用的机器学习和深度学习方法,并提供相应的源代码示例。这可以通过人工标注或半自动的方式完成。数据裁剪:根据研究区域的范围,裁剪遥感影像数据,以减少计算和存储的负担,并确保只包含感兴趣的土地利用区域。

code_program481的博客 2039

一文搞懂电流、电压的有效值 RMS

交流电有正半周、负半周,直接平均可能抵消成 0,但负半周一样会发热。这个交流电如果换成直流电,能产生同样发热功率时,对应的直流电压或电流”,电容耐压通常不能按 220V 选,常见会选 400V 或更高余量。所以做硬件时,220VAC 整流滤波后电容上会接近。电压/电流的有效值,也叫。如果它加在电阻上,发热按。

qq_52293640的博客 449

[Luogu P2257] YY的GCD (莫比乌斯函数)

题面 传送门:洛咕 Solution 推到自闭,我好菜啊 显然,这题让我们求: \(\large \sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)\in prime]\) 根据套路,我们可以把判断是否为质数改为枚举这个质数,有: 为了方便枚举,我们在这里假设有\(m>n\) \(\large \sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{k\...

weixin_30732487的博客 127

6、云计算中的多核技术:架构、并行性与局限性

本博文深入探讨了云计算中多核技术的架构、并行性及其局限性。文章详细介绍了多核处理器的基础概念、并行硬件和软件的设计原理,并对硬件和软件并行性进行了分类和分析。同时,文章讨论了多核架构在实际应用中面临的挑战,如功率墙、内存墙和ILP墙等问题,并提出了应对策略。此外,还总结了多核技术在高性能计算、实时处理和云计算等领域的应用机遇。文章旨在帮助读者更好地理解多核技术的关键问题,并为未来的技术探索提供方向。

java5的博客 122

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

线性筛学习

guapi2333的博客 863

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

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

CF1500B(Div.1) Two chandeliers

EXCRT+二分答案

guapi2333的博客 362

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

guapi2333的博客 284

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

利用容斥解决欧拉函数相关问题&&[NOI2010] 能量采集

利用容斥解决欧拉函数相关问题&&[NOI2010] 能量采集

guapi2333的博客 241

CF1068B LCM

Problem:给定一个正整数。问:当正整数时,有多少种不同的正整数。 先让我们化简一下题目给定的式子: 由于的值域远远大于,所以说答案就是能整除的数的个数。 Code: #include&lt;cstdio&gt; #include&lt;iostream&gt; using namespace std; long long b,ans; int main() { cin&...

guapi2333的博客 239

HDU4944 FSF’s game

利用欧拉函数性质普通莫比乌斯反演+对数论分块求和的筛法优化

guapi2333的博客 228

数论分块&&P2261 [CQOI2007]余数求和

数论分块基础知识及P2261 Solution

guapi2333的博客 226

P3306 [SDOI2013] 随机数生成器

简单BSGS+简单exgcd

guapi2333的博客 222

P1829 [国家集训队]Crash的数字表格

经典莫比乌斯反演转化gcd(i,j)P3768弱化版)

guapi2333的博客 218
上一篇: P1829 [国家集训队]Crash的数字表格
下一篇: P4281 [AHOI2008]紧急集合
guapi2333
博客等级 码龄9年 7粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值