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

题解:AcWing 204 表达整数的奇怪方式

【题目来源】

AcWing:204. 表达整数的奇怪方式 - AcWing题库

【题目描述】

给定 \(2n\) 个整数 \(a_1,a_2,\dots,a_n\)\(m_1,m_2,\dots,m_n\),求一个最小的非负整数 \(x\),满足 \(\forall \in [1,n],x\equiv m_i(mod\ a_i)\)

【输入】

\(1\) 行包含整数 \(n\)

\(2\dots n+1\) 行:每 \(i+1\) 行包含两个整数 \(a_i\)\(m_i\),数之间用空格隔开。

【输出】

输出最小非负整数 ,如果 \(x\) 不存在,则输出 \(-1\)

【输入样例】

2
8 7
11 9

【输出样例】

31

【解题思路】

image

image

image

image

【算法标签】

《AcWing 204 表达整数的奇怪方式》 #数学知识# #同余方程# #扩展中国剩余定理#

【代码详解】

#include <bits/stdc++.h>
using namespace std;typedef long long LL; // 定义 LL 为 long long 类型// 扩展欧几里得算法,用于求解 ax + by = gcd(a, b) 的一组整数解
LL exgcd(LL a, LL b, LL &x, LL &y)
{if (b == 0) { // 如果 b 为 0,递归终止x = 1, y = 0; // 解为 x = 1, y = 0return a; // 返回 gcd(a, b)}LL r = exgcd(b, a % b, x, y); // 递归求解LL x1 = x, y1 = y; // 保存递归结果x = y1, y = x1 - a / b * y1; // 更新 x 和 yreturn r; // 返回 gcd(a, b)
}int main()
{int n; // 定义整数 n,表示方程的数量bool has_answer = true; // 标记是否有解LL a1, m1; // a1 和 m1 表示第一个方程的系数和常数项cin >> n; // 输入方程的数量cin >> a1 >> m1; // 输入第一个方程的系数和常数项// 循环处理剩余的 n - 1 个方程for (int i = 0; i < n - 1; i++) {LL a2, m2; // a2 和 m2 表示下一个方程的系数和常数项cin >> a2 >> m2; // 输入下一个方程的系数和常数项LL k1, k2; // k1 和 k2 用于存储扩展欧几里得算法的解// 使用扩展欧几里得算法求解 a1 * k1 + a2 * k2 = gcd(a1, a2)LL d = exgcd(a1, a2, k1, k2);// 如果 (m1 - m2) 不能被 gcd(a1, a2) 整除,则无解if ((m1 - m2) % d) {has_answer = false; // 标记无解break; // 跳出循环}// 调整 k1 和 k2 的值k1 = k1 * (m2 - m1) / d;k2 = k2 * (m2 - m1) / d;LL t = a2 / d;// 保证 k1 为最小非负整数解k1 = (k1 + t) % t;// 更新 m1 的值m1 = a1 * k1 + m1;// 更新 a1 的值a1 = a1 / d * a2;}if (has_answer) // 输出最小非负整数解cout << (m1 + a1) % a1 << endl;else // 无解输出 -1cout << -1 << endl;return 0; // 程序结束
}

【运行结果】

2
8 7
11 9
31
http://www.jsqmd.com/news/409272/

相关文章:

  • 极度注重隐私的浏览器
  • 未来世界生存指南(非常详细),拥抱AI从入门到精通,收藏这一篇就够了!
  • 题解:AcWing 878 线性同余方程
  • AI应用落地实操指南(非常详细),2026最新路线图,从入门到精通,收藏这一篇就够了!
  • 题解:AcWing 877 扩展欧几里得算法
  • FIQ 与 IRQ
  • Spring AI学习:聊天记忆
  • 题解:AcWing 876 快速幂求逆元
  • Kotlin程序员面试算法宝典【1.6】
  • 题解:AcWing 875 快速幂
  • 2026宜宾搬家优质品牌推荐:日式搬家、特惠搬家、短途搬运、空调移机、设备搬运、跨市搬家、运输公司、钢琴搬运选择指南 - 优质品牌商家
  • ACE Studio 联合 StepFun 开源了音乐生成基础模型 ACE-Step 1.5
  • 智能论文引用工具推荐:六大高效标注方案详解
  • 【完全免费】视频提取音频工具,视频转mp3格式,业界良心!视频一键提取mp3音频格式,操作简单不复杂!
  • RL的几种层次
  • 建筑浮雕优质厂家推荐:外墙eps线条/泡沫浮雕/泡沫浮雕构件/藏式线条/门窗装饰线条/eps欧式线条/选择指南 - 优质品牌商家
  • 信息泄露
  • 大数据与Power BI:开启数据分析新征程
  • 2026年2月建筑城规考研调剂培训班推荐,设计实力与调剂政策深度解读 - 品牌鉴赏师
  • 【课程设计/毕业设计】基于springboot+vue的工厂仓库管理系统的设计与实现基于Springboot的工厂仓库系统设计与实现【附源码、数据库、万字文档】
  • P1993 小 K 的农场
  • 2026广东最新沉香手串生产厂家top5推荐!广州等地优质沉香手串公司权威榜单发布,品质纯正选品安心 - 十大品牌榜
  • Java毕设项目:基于springboot的非遗文化传承与推广平台(源码+文档,讲解、调试运行,定制等)
  • 16PSK调制在Matlab上的蒙特卡罗仿真
  • 经典常谈
  • EPS线条优质厂家推荐 全流程一站式服务更靠谱 - 优质品牌商家
  • 计算机Java毕设实战-基于SpringBoot + Vue的物流管理系统设计与实现基于Spring Boot的YH物流管理系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Gstreamer插入第三方plugins流程:rgaconvert
  • 计算机Java毕设实战-基于springboot的非遗文化传承与推广平台基于web的非遗文化推广综合平台设计【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机Java毕设实战-基于Springboot的工厂仓库系统设计与实现基于Springboot的工厂仓库出入库管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】