poj3904&&SP4191 Sky Code

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

Label

容斥原理+Möbius函数解决数论相关问题

Description

多组询问:给定nnn个数ai(n,ai≤104)a_i(n,a_i\leq 10^4)ai​(n,ai​≤104),试求∑a,b,c,d∈a[gcd(a,b,c,d)==1]\sum_{a,b,c,d\in a}[gcd(a,b,c,d)==1]∑a,b,c,d∈a​[gcd(a,b,c,d)==1]

Solution

有了解决p3455的基础,我们不难推导此题的解法。

设did_idi​为aaa中被ddd整除的数的个数,我们利用类似埃氏筛的方法求出d1∼dnd_1\sim d_nd1​∼dn​,接下来直接套用p3455的容斥思路与公式可得:
​ ans=∑i=1max{ai}μ(i)Cdi4ans=\sum_{i=1}^{max\{a_i\}}\mu(i)C_{d_i}^{4}ans=i=1∑max{ai​}​μ(i)Cdi​4​

Code

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

const int MAXN=1e4;
int n,miu[MAXN+20],prime[MAXN],cnt,a[MAXN+20],maxn,scnt[MAXN+20];
ll ans;
bool notprime[MAXN+20],vis[MAXN+20];

void Mobius()
{
	miu[1]=1,notprime[1]=true;
	for(ri i=2;i<=MAXN;++i)
	{
		if(!notprime[i]) prime[++cnt]=i,miu[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 miu[i*prime[j]]=-miu[i];
		}
	}	
}

int main()
{
	Mobius();	
	while(~scanf("%d",&n))
	{
		memset(scnt,0,sizeof(scnt)); 
		memset(vis,0,sizeof(vis));
		maxn=0,ans=0LL;
		for(ri i=1;i<=n;++i)
		{
			scanf("%d",&a[i]);
			maxn=max(maxn,a[i]); vis[a[i]]=1;
		}
		scnt[1]=n;
		for(ri i=2;i<=maxn;++i)
			for(ri j=1;i*j<=maxn;++j)
				if(vis[i*j]) ++scnt[i];
		for(ri i=1;i<=maxn;++i)
			if(scnt[i]>=4) ans+=(ll)miu[i]*(ll)(scnt[i]-3)*(ll)(scnt[i]-2)*(ll)(scnt[i]-1)*(ll)scnt[i]/24LL;
		cout<<ans<<'\n';
	}
	return 0;
}
P1072 [NOIP2009 提高组] Hankson 的趣味题 gcd与lcm的算术基本定理表现形式 阅读详情

相关推荐

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?.docx

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?

POJ3904 & SPOJ & 洛谷SP4191 Sky Code 莫比乌斯反演

题目链接(略多): SPOJ POJ3904 洛谷SP4191 vjudge cn.vjudge.net 题目大意: 给出nnn个数a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​,要求从nnn个数中选出444个数a,b,c,da,b,c,da,b,c,d,要求gcd(a,b,c,d)=1.gcd(a,b,c,d)=1.gcd(a,b,c,d)=1. 求共有多少...

The_OIer的博客 404

usb 扩容盘检测修复工具源码,编译产物

usb 扩容盘检测修复工具源码,编译产物

[题解] SP4191 Sky Code

[题解] SP4191 Sky Code 莫比乌斯反演 题目链接 这是我做的最水的一道莫比乌斯板题。。。不过这题是我第一次真正用到莫比乌斯反演,之前都是用的莫比乌斯函数的性质。。。 我们这里直接定义f(n)f(n)f(n)为a1a_1a1​到ana_nan​中,gcd⁡(a,b,c,d)=n\gcd(a,b,c,d)=ngcd(a,b,c,d)=n的无序四元组个数,g(n)g(n)g(n)为a1a_1a1​到ana_nan​中,gcd⁡(a,b,c,d)=n的倍数\gcd(a,b,c,d)=n的倍数gcd(

辣椒油的博客 201

融合UWB和IMU割草机定位EKF研究(Matlab代码实现)

内容概要:本文主要介绍了一个名为“Plecs全桥LLC谐振变换器仿真模型”的技术资源,该资源聚焦于电力电子领域中的LLC谐振变换器建模与仿真,涵盖开环、闭环控制、软启动设计及参数优化等核心内容。文档不仅提供了LLC变换器的详细建模方法与仿真案例,还系统梳理了其在高效电源转换系统中的应用,包括隔离型全桥拓扑结构的设计与性能分析。此外,资源汇总了大量Matlab/Simulink仿真模型及相关科研方向,涉及新能源并网、储能控制、电机驱动等多个前沿领域,全面展示LLC谐振变换器在现代电力系统中的关键技术实现路径。同时,文档附带多种学习资料获取途径,如网盘链接和公众号资源,便于研究人员深入实践与拓展研究。; 适合人群:具备扎实的电力电子、自动控制理论基础,从事新能源发电、开关电源设计、电力系统仿真等相关领域的研究生、工程师及科研人员。; 使用场景及目标:①深入理解LLC谐振变换器的工作原理、建模方法与控制策略;②开展电力电子变换器的仿真验证与参数优化设计;③支撑科研项目、学位论文或工程项目的系统仿真与方案验证; 阅读建议:建议结合所提供的仿真模型与参考文献,使用Plecs或Simulink软件进行动手实践,重点掌握LLC谐振变换器的建模流程、闭环控制设计、软启动机制及参数调试技巧,以全面提升在实际工程中的应用与创新能力。

微软Media Creation Tool 创建工具 1.3 升级:支持全新下载安装Win11 22H2 Build 22621.525

微软 Media Creation Tool 创建工具 1.3 升级:支持全新下载安装 Win11 22H2 Build 22621.525 ISO 镜像,如果今天运行使用 Media Creation Tool,则会下载 Windows 11 2022 版本 Build 22621.525,它不会向操作系统添加任何新内容,但会修复安装问题,下面来看看详细的更新内容。

zym0218的博客 4232

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

线性筛学习

guapi2333的博客 863

电流采样电路设计:差分放大与ADC采集详解

在电机控制、电源管理、电池监测等应用中,电流采样是一个关键环节。通常,我们使用小阻值的采样电阻将电流信号转换为电压信号,再通过运放放大后送入ADC进行采集。本文将详细分析一种基于差分放大器的电流采样电路,包括信号放大、参考电压偏置、滤波保护以及ADC转换计算等内容。

W0s477的博客 2万+

CF1500B(Div.1) Two chandeliers

EXCRT+二分答案

guapi2333的博客 362

Xilinx SDK工程编译、链接、调试注意事项

1、添加工程 启动SDK时选取workspace,如下图所示: 对应的workpace文件夹中会生成如下几个文件: 如果当前workspace是首次加载工程,SDK会进入启动界面 点击Import Project,导入已有工程 点击Browse,添加工程路径,一个完整的工程包含一个bsp文件夹,一个HW文件夹,和一个src文件夹(添加C功能函数) 点击Fini...

Autumn_He的博客 1万+

Unity开发HoloLens应用:从打包到部署的完整指南

本文为Unity开发者提供了将应用部署到HoloLens设备的完整实战指南。详细讲解了从环境准备、Unity项目配置、生成Visual Studio工程,到最终构建APPX安装包并通过设备门户或Visual Studio进行部署的全流程,帮助开发者高效完成混合现实应用的打包与安装。

red88的博客 1019

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

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

guapi2333的博客 284

单细胞分析避坑指南:SCTransform和Harmony参数设置详解

本文深入解析了单细胞分析中SCTransform标准化与Harmony批次校正的关键参数设置。针对10x Genomics等数据,详细探讨了如何通过调整`vars.to.regress`、`theta`等核心参数,在有效去除技术噪音的同时,避免过度校正以保留关键的生物学差异,从而提升分析结果的可靠性与可解释性。

weixin_29053073的博客 609

P1641 [SCOI2010]生成字符串

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

guapi2333的博客 270

ROS TF坐标转换实战:从零搭建机器人坐标系(附常见问题排查)

本文提供了一份ROS TF坐标转换的实战指南,详细讲解了如何从零为机器人搭建完整的坐标系,并深入解析了TF的原理。内容涵盖静态与动态坐标变换的发布、URDF模型使用、以及Rviz和rqt_tf_tree等可视化调试工具。文章还附带了常见问题排查表,帮助开发者快速定位并解决TF树断裂、数据错位等典型问题。

weixin_29268385的博客 204

深入解析fio Benchmark测试:从源码到实践

本文深入解析fio Benchmark测试工具,从入门指南到源码架构分析,详细介绍了其核心模块、关键数据结构和I/O处理机制。通过实战案例展示如何优化存储性能测试,包括内存对齐、多线程调优等技巧,帮助开发者充分利用fio进行精准的存储性能评估。

weixin_42563415的博客 208

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

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

guapi2333的博客 249

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 2024轻量化网络MoblieNetV4:移动生态系统的通用模型

一、本文介绍 本文记录的是基于MobileNet V4的YOLOv11目标检测轻量化改进方法研究。MobileNet V4通过整合UIB、Mobile MQA以及优化的NAS策略,能够在在不降低性能指标的前提下,降低计算成本。本文配置了原论文中MNv4-Conv-S、MNv4-Conv-M、MNv4-Conv-L、MNv4-Hybrid-M和MNv4-Hybrid-L五种模型,以满足不同的需求。 模型 参数量 计算量 推理速度 YOLOv11m 20.0M 67.6GFLOPs 3.5ms

Limiiiing的博客 4460

P2398 GCD SUM

欧拉函数

guapi2333的博客 242

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

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

guapi2333的博客 241

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...

CF1068B LCM

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

guapi2333的博客 239

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

P2257 YY的GCD

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

guapi2333的博客 208
上一篇: P3455 [POI2007]ZAP-Queries
下一篇: 数论分块&&P2261 [CQOI2007]余数求和
guapi2333
博客等级 码龄9年 7粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值