当前位置: 首页 > news >正文

信奥赛C++提高组csp-s之数论基础专题课:从同余到分数模运算3(案例实践:裴蜀定理)

信奥赛C++提高组csp-s之数论基础专题课:从同余到分数模运算3(案例实践:裴蜀定理)

课程目标

  1. 理清脉络:理解同余、裴蜀定理、扩展欧几里得、乘法逆元、分数模运算之间的逻辑关系。
  2. 掌握核心:熟练运用扩展欧几里得算法求解不定方程及逆元。
  3. 实战应用:能够解决相关的数论模板题和简单变式题。

第三部分:案例实战(裴蜀定理)

研究案例:P4549 裴蜀定理
题目描述

给定一个包含n nn个元素的整数序列A AA,记作A 1 , A 2 , A 3 , . . . , A n A_1,A_2,A_3,...,A_nA1,A2,A3,...,An

求另一个包含n nn个元素的待定整数序列X XX,记S = ∑ i = 1 n A i × X i S=\sum\limits_{i=1}^nA_i\times X_iS=i=1nAi×Xi,使得S > 0 S>0S>0S SS尽可能的小。

输入格式

第一行一个整数n nn,表示序列元素个数。

第二行n nn个整数,表示序列A AA

输出格式

一行一个整数,表示S > 0 S>0S>0的前提下S SS的最小值。

输入输出样例 1
输入 1
2 4059 -1782
输出 1
99
说明/提示

对于100 % 100\%100%的数据,1 ≤ n ≤ 20 1 \le n \le 201n20∣ A i ∣ ≤ 10 5 |A_i| \le 10^5Ai105,且A AA序列不全为0 00

思路分析

裴蜀定理:对于任意整数a 1 , a 2 , … , a n a_1, a_2, \dots, a_na1,a2,,an,存在整数x 1 , x 2 , … , x n x_1, x_2, \dots, x_nx1,x2,,xn使得
a 1 x 1 + a 2 x 2 + ⋯ + a n x n = gcd ⁡ ( a 1 , a 2 , … , a n ) a_1 x_1 + a_2 x_2 + \cdots + a_n x_n = \gcd(a_1, a_2, \dots, a_n)a1x1+a2x2++anxn=gcd(a1,a2,,an)
并且该gcd ⁡ \gcdgcd是能表示的最小正整数。
因此,本题要求S = ∑ A i × X i > 0 S = \sum A_i \times X_i > 0S=Ai×Xi>0的最小值,答案就是所有A i A_iAi最大公约数(考虑绝对值,因为符号不影响公约数)。

步骤

  1. 读入 n 和序列 A。
  2. 初始化答案变量为 0。
  3. 对每个A i A_iAi,取绝对值后与当前答案求最大公约数,更新答案。
  4. 输出最终答案。

注意:

  • 由于输入中可能有负数,取绝对值再求 gcd。
  • 若所有数均为 0(题目保证不全为 0),则答案应为 0,但本题不会出现此情况。

代码实现

#include<bits/stdc++.h>usingnamespacestd;// gcd 函数intgcd(inta,intb){returnb?gcd(b,a%b):a;}intmain(){intn;// 元素个数cin>>n;intans=0;// 初始答案为 0(gcd(0,x)=x)for(inti=0;i<n;++i){inta;// 当前读入的 A_icin>>a;if(a<0)a=-a;// 取绝对值ans=gcd(ans,a);// 与当前答案求 gcd}cout<<ans<<endl;// 输出最小正整数 Sreturn0;}

功能分析

  • 输入处理:使用cin读取整数个数和序列,由于n ≤ 20 n \le 20n20,输入量很小。
  • 求绝对值:对每个数取abs(此处直接用条件判断if(a<0) a=-a),确保 gcd 处理正数。
  • 逐步 gcd:初始化ans = 0,利用性质gcd ⁡ ( 0 , x ) = x \gcd(0, x) = xgcd(0,x)=x,依次与每个数求 gcd,最终得到所有数的最大公约数。
  • 输出结果:输出该 gcd,即为满足 (S>0) 的最小值。

正确性:根据裴蜀定理,任意整数线性组合能取到的最小正数就是这些数的最大公约数,故答案正确。

复杂度:求 gcd 的时间复杂度为O ( log ⁡ max ⁡ ∣ A i ∣ ) O(\log \max|A_i|)O(logmaxAi),总复杂度O ( n log ⁡ M ) O(n \log M)O(nlogM)

更多系列知识,请查看专栏:《信奥赛C++提高组csp-s知识详解及案例实践》:
https://blog.csdn.net/weixin_66461496/category_13113932.html


各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
http://www.jsqmd.com/news/461131/

相关文章:

  • springboot基于安卓的酒店客房预约管理APP
  • springboot安卓Android的快递物流管理系统
  • springboot安卓充电站冲充电桩预约APP视频
  • 读2025世界前沿技术发展报告08智能制造技术发展(上)
  • 打印机下划线打印不均匀的5个解决技巧
  • Flutter 三方库 flad_cli 的鸿蒙化适配指南 - 实现 Dart 工程的自适应模板扫描与脚手架自动化、支持端侧资源一键生成与代码架构规约校验实战
  • Flutter 三方库 ktc_dart 的鸿蒙化适配指南 - 连接 KTC 教育平台 API、实现课表同步、成绩查询与学生端核心功能
  • Flutter 三方库 hooks_runner 的鸿蒙化适配指南 - 实现声明式的生命周期 Hook 任务管理、支持端侧自动化脚本触发与执行流精准编排实战
  • Flutter 三方库 creator_core 的鸿蒙化适配指南 - 支持极简组件状态管理、反应式逻辑驱动与流式数据处理
  • claude code插件市场添加和使用
  • Matlab代码 基于DOA-Transformer-LSTM两模型回归预测一键对比(多输出单输出)
  • 【64】杂草数据集(有v5/v8模型)/YOLO杂草检测
  • I/O 多路复用
  • 移动机器人总装图
  • 1e1af3e8-900f-4e13-937e-e02fce56cf3e
  • 跨越词汇的鸿沟:NLTK 中不为人知的语义与语篇分析能力深度探索
  • 【全网最全】2026主流AI绘画比例大横评:DALL-E 3、Midjourney、Gemini与Claude的隐藏技巧
  • 企业级高校实习管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 紧随电车出海浪潮,外贸ERP助力车企实现精准协同与库存优化
  • Flutter 三方库 coverage_reporter 的鸿蒙化适配指南 - 实现具备 LCOV 自动分析与多格式统计的代码覆盖率报告引擎、支持端侧质量量化与 CI 流水线对齐实战
  • Flutter 三方库 gviz 的鸿蒙化适配指南 - 实现复杂的 Graphviz 拓扑图布局计算、支持 DOT 语言解析与自动化图谱生成
  • Flutter 三方库 jsonata_dart 的鸿蒙化适配指南 - 实现高性能的 JSON 数据查询与转换、支持 JSONata 表达式引擎与端侧复杂数据清洗
  • 放化疗口腔并发症治疗用药选速舒®,口腔护理更科学
  • Flutter 三方库 session 的鸿蒙化适配指南 - 实现具备 TTL 机制的端侧会话持久化、支持敏感凭证加密存储与全生命周期状态同步实战
  • 宁波极微纳-精选2026纳米材料厂家/纳米氧化物厂家,全域适配,赋能多业 - 栗子测评
  • Spring Cloud负载均衡组件到底是哪一个?
  • Flutter 三方库 teno_datetime 的鸿蒙化适配指南 - 实现极简的日期时间格式化与操作增强、支持多语言本地化显示与时区转换
  • 别让“播放量迷信”抹杀你的努力!
  • C++ 模板进阶:从特化机制到分离编译
  • OpenClaw 入门实践:Token 机制、Skill 安装与核心概念解析