拓展中国剩余定理

题目链接

代码:

/*扩展中国剩余定理的使用范围更广泛,不要求模数全部互质扩展中国剩余定理:两两合并同余方程,合并 n - 1 次之后,就能求解合并两个同余方程:x ≡ r1 (mod p1) --- x = a*p1 + r1x ≡ r2 (mod p2) --- x = b*p2 + r2由上面两式得:x = a*p1 + r1 = b*p2 + r2 --- a*p1 - b*p2 = r2 - r1根据裴蜀定理,算式 a*p1 - b*p2 = r2 - r1:当 gcd(p1, p2) | (r2 - r1) 时,有解通过扩展欧几里得算法可得特解为:A = X / gcd(p1, p2) * (r2 - r1) B = Y / gcd(p1, p2) * (r2 - r1)
那么通解就是:AA = A + p2/gcd(p1, p2) * kBB = B - p1/gcd(p1, p2) * k将解代入原方程:x = AA * p1 + r1 = p1*p2/gcd(p1, p2) * k + p1*A + r1
又变成了 x = a * p + r 的形式这样合并 n - 1 次,就能得出结果*/#include <iostream>using namespace std;typedef __int128 LL;const int N = 1e5 + 10;int n;
LL p[N], r[N];inline LL read()
{LL x = 0, f = 1;char ch = getchar();while(ch < '0' || ch > '9'){if(ch == '-') f = -1;ch = getchar();}while(ch >= '0' && ch <= '9'){x = x * 10 + ch - '0';ch = getchar();}return x * f;
}inline void print(LL x)
{if(x < 0){putchar('-');x = -x;}if(x > 9) print(x / 10);putchar(x % 10 + '0');
}LL exgcd(LL a, LL b, LL& x, LL& y)
{if(b == 0){x = 1, y = 0;return a;}LL x1, y1, d;d = exgcd(b, a % b, x1, y1);x = y1, y = x1 - a / b * y1;return d;
}LL excrt()
{LL p1 = p[1], r1 = r[1];for(int i = 2; i <= n; i++){LL p2 = p[i], r2 = r[i];// 二元一次不定方程:p1 * x + p2 * y = r2 - r1LL x, y, d, c = r2 - r1;d = exgcd(p1, p2, x, y);if(c % d) return -1;x = c / d * x, y = c / d * y; // 求出特解// x 有可能是负数,补正一下LL mod = p2 / d;x = (x % mod + mod) % mod;// 求出合并后的 p 和 r,一定要先更新 r,因为会用到 p 的值r1 = x * p1 + r1;p1 = p1 / d * p2;}return r1 % p1;
}int main()
{scanf("%d", &n);for(int i = 1; i <= n; i++) p[i] = read(), r[i] = read();print(excrt());return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

from transformers.modeling_utils import PreTrainedModel

from transformers.modeling_utils import PreTrainedModel 是用于导入 Hugging Face Transformers 库中的 PreTrainedModel 类。这个类是所有预训练模型的基类&#xff0c;提供了许多通用功能和方法&#xff0c;适用于不同类型的模型&#xff08;如BERT、GPT、Transformer-XL等…

STM32对数码管显示的控制

1、在项目开发过程中会遇到STM32控制的数码管显示应用&#xff0c;这里以四位共阴极数码管显示控制为例讲解&#xff1b;这里采用的控制芯片为STM32F103RCT6。 2、首先要确定数码管的段选的8个引脚连接的单片机的引脚是哪8个&#xff0c;然后确认位选的4个引脚连接的单片机的4…

ChatGPT:fetch/xhr是什么意思

ChatGPT&#xff1a;fetch/xhr是什么意思 fetch 和 XHR&#xff08;XMLHttpRequest&#xff09;是两种用于在客户端与服务器之间进行异步通信的方法。在网页开发中&#xff0c;它们用于从服务器获取数据或将数据发送到服务器&#xff0c;而不需要刷新整个页面。 fetch fetch …

平滑切换/过渡多个控制器的方法

控制系统理论 在控制系统领域&#xff0c;平滑切换多个控制器通常指的是在保持系统稳定性和性能的同时&#xff0c;实现控制器之间的无缝切换。 输出抖动抑制方法&#xff1a;通过设计包含积分作用的控制器实现跟踪控制&#xff0c;并通过设计补偿器来减小控制输入信号在切换…

京东技术团队撰写的整整986页《漫画学Python》到底有什么魅力?

这是一本Python入门书。无论您是想学习编程的小学生&#xff0c;还是想参加计算机竞赛的中学生&#xff0c;抑或是计算机相关专业的大学生&#xff0c;甚至是正在从事软件开发的职场人&#xff0c;本书都适合您阅读和学习。但您若想更深入地学习Python并进行深层次应用&#xf…

第一个vue——01

指定vue实例的挂载位置 <div id ‘app’> </div> 一、创建vue实例 1.为什么要 new vue() ,直接调用vue&#xff08;&#xff09;函数可以吗&#xff1f; No&#xff0c; 因为直接调用vue()函数&#xff0c;不创建实例的话&#xff0c;会出现以下错误&#xff1…

通过 Parallels Desktop 虚拟机安装运行 macOS 15 Sequoia

在 Apple 的 WWDC 24 大会上&#xff0c;macOS Sequoia 15 成为全场热议的焦点。 作为科技爱好者和开发者&#xff0c;我们都迫不及待想要体验这些最新功能。但如果直接把整个 Mac 升级到测试版&#xff0c;可能不太现实&#xff0c;特别是当你需要保持主系统稳定的时候。 幸…

单例模式之饿汉式

文章目录 单例模式&#xff08;饿汉式&#xff09;代码静态变量创建实例代码静态代码块创建实例 单例模式&#xff08;饿汉式&#xff09; 单例模式是一种创建性的设计模式&#xff0c;主要是保证一个类只能有一个实例。全局中保证一个实例的使用。 单例模式饿汉式主要的构成…

数据库常见问题(持续更新)

数据库常见问题(持续更新) 1、数据库范式&#xff1f; 1NF&#xff1a;不可分割2NF&#xff1a;没有非主属性对候选码存在部分依赖3NF&#xff1a;没有非主属性传递依赖候选码BCNF&#xff1a;消除了主属性对对候选码的传递依赖或部分依赖 2、InnoDB事务的实现&#xff1f; …

大数据平台建设概要

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 欢迎关注微信公众号&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&a…

Oracle 19c RAC 心跳异常处理

客户机房异常断电后&#xff0c;启动19c集群报错如下 2024-07-05 17:43:27.934 [GIPCD(5964292)]CRS-42216: No interfaces are configured on the local node for interface definition en3(:.*)?:100.100.100.0: available interface definitions are [en0(:.*)?:10.88.0.…

Unity--射线检测--RayCast

Unity–射线检测–RayCast 1.射线检测的含义 射线检测,根据名称而言,使用一条射线来检测是击中了某个物体/多个物体 射线检测的包含两个部分: 射线和检测 2.射线检测可以用在哪些地方 射击游戏&#xff1a; 玩家的瞄准和射击&#xff1a;检测玩家视线是否与敌人或其他目标…

阶段三:项目开发---大数据开发运行环境搭建:任务5:安装配置Kafka

任务描述 知识点&#xff1a;安装配置Kafka 重 点&#xff1a; 安装配置Kafka 难 点&#xff1a;无 内 容&#xff1a; Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;…

GEE代码实例教程详解:地表温度长时间序列分析

简介 在本篇博客中&#xff0c;我们将使用Google Earth Engine (GEE) 对地表温度 (LST) 进行长时间序列分析。通过结合Landsat 4-9的数据&#xff0c;我们将探索1982年至2024年间地表温度的变化趋势。 背景知识 Landsat数据集 Landsat数据集提供了多时相、多光谱的地表观测…

用起来超爽的4个宝藏软件工具

记得带 “记得带”是一款专为繁忙的都市人设计的生活服务软件&#xff0c;旨在帮助用户轻松管理日常生活中的各种事务。该应用程序集成了多种实用功能&#xff0c;包括购物清单、待办事项、日程安排和健康追踪等。它还具有智能提醒功能&#xff0c;可以根据用户的日常习惯和偏好…

14-41 剑和诗人15 - RLAIF 大模型语言强化培训

​​​​​​ 介绍 大型语言模型 (LLM) 在自然语言理解和生成方面表现出了巨大的能力。然而&#xff0c;这些模型仍然存在严重的缺陷&#xff0c;例如输出不可靠、推理能力有限以及缺乏一致的个性或价值观一致性。 为了解决这些限制&#xff0c;研究人员采用了一种名为“人工…

每天一个数据分析题(四百十六)- 线性回归模型

根据模型假设&#xff0c;线性回归模型中误差项的方差为 A. 常数 B. 函数 C. 随机变量 D. 以上都不是 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python&#xff0c;SQL&#xff0c;统计学&#…

【大模型】多模型在大模型中的调度艺术:解锁效率与协同的新境界

多模型在大模型中的调度艺术&#xff1a;解锁效率与协同的新境界 引言一、多模型与大模型的概念解析二、多模型调度的必要性三、多模型调度的关键技术3.1 负载均衡与动态分配3.2 模型间通信与协作3.3 模型选择与优化 四、多模型运行优化策略4.1 异构计算平台的利用4.2 模型压缩…

20240708每日前端---------提升网站设计水平的15个CSS技巧,来试试吧

框阴影效果向元素添加阴影可以增强其深度和视觉吸引力。 .box {box-shadow: 0 4px 8px rgba(0,0,0,0.1); }平滑的过渡动画 CSS 过渡是增强网页交互性的简单方法。 当鼠标悬停在按钮上时&#xff0c;按钮的背景颜色会平滑地过渡到新颜色。 .button {transition: background-co…