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

【提高+/省选−】洛谷P1495 —— 【模板】中国剩余定理(CRT)/ 曹冲养猪

见:P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪 - 洛谷

题目描述

自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲满不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把。举个例子,假如有 16 头母猪,如果建了 3 个猪圈,剩下 1 头猪就没有地方安家了。如果建造了 5 个猪圈,但是仍然有 1 头猪没有地方去,然后如果建造了 7 个猪圈,还有 2 头没有地方去。你作为曹总的私人秘书理所当然要将准确的猪数报给曹总,你该怎么办?

输入格式

第一行包含一个整数 n —— 建立猪圈的次数,接下来 n 行,每行两个整数 ai​,bi​,表示建立了 ai​ 个猪圈,有 bi​ 头猪没有去处。你可以假定 a1​∼an​ 互质。

输出格式

输出包含一个正整数,即为曹冲至少养母猪的数目。

输入输出样例

in:
3
3 1
5 1
7 2
out:
16

说明/提示

1≤n≤10,0≤bi​<ai​≤100000,1≤∏ai​≤1018

中国剩余定理(CRT)

不难看出,

题面可以翻译为:

Q:求解以下线性同余方程组:

⎩⎨⎧​x≡r1​(modm1​)x≡r2​(modm2​)...x≡rn​(modmn​)​

其中模数 m1​.m2​,...

mn​ 为 两两互质 的整数,

求 x 的最小非负整数解。

  • 利用中国剩余定理求解,步骤如下:

    (1) 计算所有模数的积 M=∏i=1n​mi​;

    (2) 计算 ci​=mi​M​;

    (3) 计算 ci​ 在模 mi​ 意义下的乘法逆元 ci−1​;

    (4) 计算解 x=∑i=1n​ri​ci​ci−1​(modM).

  • 中国剩余定理的证明:

    • 首先证明 x=∑i=1n​ri​ci​ci−1​ 对于每一个 j 都有 x≡rj​(modmj​).

      • 若 i=j ,则 cj​ 中包含因数 ci​,
        ∴cj​≡0(modmj​),
        ∴rj​cj​cj−1​≡0(modmj​).

      • 若 i=j ,则 cj​ 中不包含因数 ci​,
        ∴cj​≡0(modmi​),
        ∵cj​cj−1​≡1(modmj​).
        ∴rj​cj​cj−1​≡rj​(modmj​).

      则对于 j ,总有:

      x​≡i=1∑n​ri​ci​ci−1​(modmj​)≡rj​cj​cj−1​(modmj​)≡rj​(modmj​)​

    • 其次,证明 x=∑i=1n​ri​ci​ci−1​ (mod M) 对于每一个 j 都有 x≡rj​ (mod mj​).

      对于每一个 mj​ 来说,mod M 相当于减去 mj​ 的若干倍,

    • 不会影响余数 rj​ 的结果.

    证毕.

  • 中国剩余定理的算法实现:

    对于 M 和 ci​,可以在两次循环时分别计算;

    对于 ci−1​,

  • 可以转化为利用 扩展欧几里得算法 求解:

    • 给定两个互质整数 a,m, 对于 ax≡1 (mod m).,求 a 的乘法逆元 x (0<x<m).

      把同余方程转化为不定方程.
      由 ax≡1 (mod m)
      得 ax=m×(−y)+1 (设为 −y 便于移项后计算)
      得 ax+my=1.
      转化为用 扩欧求解不定方程 求 ax+my=1=gcd(a,m) 方程中 x 的解.

      为确保得到的答案为 最小正整数 ,最后答案为 (x%m+m)%m.
      e.g. x=−7,m=5,ans=(−7%5+5)%5=3;
      x=7,m=5,ans=(7%5+5)%5=2.

作者提醒

我本来是用long long做的

但是有一个样例错了

后来发现数据量太大了

long long爆掉了

只能用__int128 才能通过。

核心代码:

#include <bits/stdc++.h>
using namespace std;
typedef __int128  ll;
const int q=3e6+5;
long long m[q],a[q];
ll e(ll a,ll b,ll &x,ll &y){if(b==0){x=1;y=0;return a;}ll d=e(b,a%b,y,x);y-=(a/b)*x;return d;
}int main() {long long n;cin>>n;ll g=1;for(int i=1;i<=n;i++){cin>>m[i]>>a[i];g*=m[i];}long long t=0;for(int i=1;i<=n;i++){ll x,y;ll mi=g/m[i];e(mi,m[i],x,y);t=(t+a[i]*mi%g*x)%g;}t=(t+g)%g;cout<<t;return 0;
}

各位大佬 

鼓励一下

关注+收藏+点赞

好吗

相关文章:

【提高+/省选−】洛谷P1495 —— 【模板】中国剩余定理(CRT)/ 曹冲养猪

见&#xff1a;P1495 【模板】中国剩余定理&#xff08;CRT&#xff09;/ 曹冲养猪 - 洛谷 题目描述 自从曹冲搞定了大象以后&#xff0c;曹操就开始捉摸让儿子干些事业&#xff0c;于是派他到中原养猪场养猪&#xff0c;可是曹冲满不高兴&#xff0c;于是在工作中马马虎虎&a…...

系统架构设计师考前冲刺笔记-第1章-系统工程与信息系统基础

文章目录 第1章 系统工程与信息系统基础大纲13 DSS5678 BSP910 SCM11 OLAP12 OLAP14 BRP15 集成16 企业门户19 边缘计算 第1章 系统工程与信息系统基础 大纲 1 3 DSS DSS 决策支持系统 Decision Support System 5 6 7 8 BSP 9 10 SCM 注意&#xff1a;生产计划 11 OLAP O…...

Vue环境下数据导出Excel的全面指南

文章目录 1. 前言2. 原生JavaScript实现方案2.1 使用Blob对象和URL.createObjectURL2.2 使用Base64编码实现 3. 常用第三方库方案3.1 使用SheetJS (xlsx)3.2 使用ExcelJS3.3 使用vue-json-excel 4. 服务器端导出方案4.1 前端请求服务器生成Excel4.2 使用Web Worker处理大数据导…...

Linux下 使用 SSH 完成 Git 绑定 GitHub

文章目录 1、检查 SSH2、生成 SSH key3、添加 SSH key4、验证绑定是否成功 1、检查 SSH Git Bash 中输入ssh命令&#xff0c;查看本机是否安装 SSH&#xff1a; 2、生成 SSH key &#xff08;1&#xff09;输入 ssh-keygen -t rsa 命令&#xff0c;表示我们指定 RSA 算法生…...

Jsoup库和Apache HttpClient库有什么区别?

Jsoup 和 Apache HttpClient 是两个功能不同的库&#xff0c;它们在 Java 开发中被广泛使用&#xff0c;但用途和功能有明显的区别&#xff1a; Jsoup 用途&#xff1a;Jsoup 是一个用于解析 HTML 文档的库。它提供了非常方便的方法来抓取和解析网页内容&#xff0c;提取和操作…...

安全漏洞频发,如何加强防护措施?

当系统安全漏洞频发时&#xff0c;应从代码安全审查、自动化漏洞扫描、权限控制与访问管理、员工安全意识培训等四个关键维度加强防护。其中&#xff0c;代码安全审查是防止漏洞渗透的第一道防线。企业应将代码安全审查纳入CI/CD流程&#xff0c;实施静态代码分析和依赖包检查机…...

Text models —— BERT,RoBERTa, BERTweet,LLama

BERT 什么是BERT&#xff1f; BERT&#xff0c;全称Bidirectional Encoder Representations from Transformers&#xff0c;BERT是基于Transformer的Encoder&#xff08;编码器&#xff09;结构得来的&#xff0c;因此核心与Transformer一致&#xff0c;都是注意力机制。这种…...

CodeBuddy初探

回顾Trae 上一篇博客Trae IDE和VSCode Trae插件初探-CSDN博客&#xff0c;我们进行了TraeIDE和Trae插件初探&#xff0c;给了Trae这样一个任务&#xff1a; 生成一个to do list清单web页面&#xff0c;采用vue实现&#xff0c;可以在页面上进行todolist进行增删改查。 Trae的…...

spark数据处理练习题详解【上】

1. (单选题) scala中属于序列的可变的集合&#xff0c;可以添加&#xff0c;删除元素的是&#xff08;&#xff09; A.Array B.List C.Tuple D.ListBuffer 答案及解析&#xff1a;D 在Scala中&#xff0c;属于序列的可变集合&#xff0c;可以添加和删除元素的是&#xff…...

sparkSQL读入csv文件写入mysql(2)

&#xff08;二&#xff09;创建数据库和表 接下来&#xff0c;我们去创建一个新的数据库&#xff0c;数据表&#xff0c;并插入一条数据。 -- 创建数据库 CREATE DATABASE spark; -- 使用数据库 USE spark;-- 创建表 create table person(id int, name char(20), age int);-- …...

产品周围的几面墙

不能把排序&#xff0c;当单选题做。 2025年的杭州咖啡馆&#xff0c;味道最浓的不是咖啡&#xff0c;是聊各种项目和创业的卷味。 在过去几年&#xff0c;聊项目的也不少&#xff0c;那时候带着更加浓烈的自信和松弛感&#xff0c;不过今年略带几分忐忑和试探的口吻。 看到网…...

【锂电池剩余寿命预测】LSTM长短期记忆神经网络锂电池剩余寿命预测(Pytorch完整源码和数据)

目录 效果一览程序获取程序内容代码分享效果一览 程序获取 获取方式一:文章顶部资源处直接下载:...

螺旋矩阵--LeetCode

题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示例 2&#xff1a; 输入&#xff1a;matrix [[…...

湖北理元理律师事务所:债务管理的社会价值探索

债务问题从来不是孤立的经济事件&#xff0c;其背后牵涉家庭稳定、社会信用体系乃至区域经济发展。湖北理元理律师事务所通过五年服务数据发现&#xff1a;科学债务规划可使单个家庭挽回约23%的可支配收入&#xff0c;间接降低离婚率、心理健康问题发生率等社会成本。 债务优化…...

知识图谱(KG)与大语言模型(LLM)

知识图谱&#xff08;KG&#xff09;以其结构化的知识表示和推理能力&#xff0c;为大语言模型&#xff08;LLM&#xff09;的“幻觉”、知识更新滞后和可解释性不足等问题提供了有力的解决方案。反过来&#xff0c;LLM的强大文本理解和生成能力也为KG的构建、补全、查询和应用…...

LLM大语言模型系列1-token

一&#xff0c;什么是token 1&#xff0c;什么是token&#xff1a; 参考&#xff1a;https://en.wikipedia.org/wiki/Token https://en.wikipedia.org/wiki/Lexical_analysis#Token 我们有很多描述token的解释&#xff0c;建议是汇总在一起进行综合理解&#xff1a; 1️⃣To…...

数据清洗-案例

四&#xff09;实现代码 在之前的项目的基础之上&#xff0c;重写去写一个包&#xff0c;并创建两个类&#xff1a;WebLogMapper和WebLogDriver类。 &#xff08;1&#xff09;编写WebLogMapper类 package com.root.mapreduce.weblog; import java.io.IOException; import…...

项目的部署发布和访问的流程

首先打包项目&#xff1a; npm run build 打包后的文件会生成在dist文件夹中&#xff0c;将dist文件夹需要放到服务器里面&#xff0c;意味着服务有dist静态资源&#xff08;index.html&#xff0c;css/&#xff0c;js/&#xff0c;img/&#xff09; 用户在浏览器输入域名&am…...

人工智能、机器学习、深度学习定义与联系

人工智能、机器学习、深度学习定义与联系目录 一、人工智能&#xff08;Artificial Intelligence, AI&#xff09;1、定义2、特征&#xff1a;3、关键阶段的概述&#xff1a;1. 萌芽期&#xff08;1940s–1950s&#xff09;&#xff1a;理论奠基2. 形成期&#xff08;1950s–19…...

Gartner《如何将生成式人工智能(GenAI)集成到应用架构》学习心得

针对软件架构师、技术专业人士如何更好的把 GenAI 如何融入解决方案,提升用户体验、生产力并带来差异化成果的趋势,Gartner发布了《Integrating GenAI Into Your Application Architecture》研究报告。 报告首先介绍了 GenAI 的发展背景,指出其已成为主流趋势,大型语言模型…...

vscode中Debug c++

在vscode中Debug ros c程序 1 在Debug模式下编译 如果用命令行catkin_make&#xff0c;在输入catkin_make时加上一个参数&#xff1a; catkin_make -DCMAKE_BUILD_TYPEDebug 或者直接修改CMakelist.txt&#xff0c;添加以下代码&#xff1a; SET(CMAKE_BUILD_TYPE "D…...

c++从入门到精通(六)--特殊工具与技术-完结篇

特殊工具与技术-完结篇 控制内存分配 重载new和delete&#xff1a; ​ 如果应用程序希望控制内存分配的过程&#xff0c;则它们需要定义自己的operator new函数和operator delete函数。当自定义了全局的operator new函数和operator delete函数后&#xff0c;我们就担负起了控…...

原型链的详细解释及使用场景

一、原型链的概念 原型链是JavaScript实现继承和属性共享的核心机制。每个对象都有一个内部属性[[Prototype]]&#xff08;可通过proto访问&#xff09;&#xff0c;指向其原型对象。当访问对象的属性时&#xff0c;若对象自身不存在该属性&#xff0c;则会沿着原型链向上查找…...

OpenCL C C++核心对象与属性对比

基础对象对应关系 OpenCL C 对象OpenCL C 对应类型创建函数示例cl::Platformcl_platform_idclGetPlatformIDs(1, &platform, NULL)cl::Devicecl_device_idclGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, NULL)cl::Contextcl_contextclCreateContext(NULL,…...

Azure 机器学习初学者指南

Azure 机器学习初学者指南 在我们的初学者指南中探索Azure机器学习&#xff0c;了解如何设置、部署模型以及在Azure生态系统中使用AutoML & ML Studio。Azure 机器学习 &#xff08;Azure ML&#xff09; 是一项全面的云服务&#xff0c;专为机器学习项目生命周期而设计&am…...

一文读懂----Docker 常用命令

Docker 是一个强大的容器化平台&#xff0c;广泛用于开发、测试和生产环境。通过 Docker 命令行工具&#xff08;CLI&#xff09;&#xff0c;我们可以轻松管理容器、镜像、网络和卷等资源。本文将详细介绍 Docker 的常用命令&#xff0c;带你熟练掌握 Docker 的核心操作命令。…...

React 19 中的useRef得到了进一步加强。

文章目录 前言一 useRef 的核心原理1.1 为什么需要 useRef&#xff1f;1.2 基本语法 二、React 19 中 useRef 的常见用法2.1 访问 DOM 元素2.2 保存跨渲染的数据 三、React 19 中的改进ref 作为一个属性案例演示(触发子组件焦点事件) 注意 总结 前言 在 React 的世界里&#x…...

报错System.BadImageFormatException:“试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)”

this.hWindowControl_Player new HalconDotNet.HWindowControl();报错System.BadImageFormatException:“试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)” System.BadImageFormatException 错误通常是由于平台架构不匹配导致的。它意味着你正在尝试在一个平台上加…...

【图像处理基石】OpenCV中都有哪些图像增强的工具?

OpenCV 图像增强工具系统性介绍 OpenCV 提供了丰富的图像增强工具&#xff0c;主要分为以下几类&#xff1a; 亮度与对比度调整 线性变换&#xff08;亮度/对比度调整&#xff09;直方图均衡化自适应直方图均衡化&#xff08;CLAHE&#xff09; 滤波与平滑 高斯滤波中值滤波双…...

Nordic 的RTC(Real-time counter)的介绍

目录 概述 1 RTC&#xff08;Real-time counter&#xff09;介绍 1.1 框架结构 1.2 时钟源 1.3 分辨率与溢出和precaler 2 寄存器功能介绍 2.1 计数寄存器 2.2 事件控制功能 2.3 比较功能 2.4 读取COUNTER寄存器 概述 本文主要介绍Nordic 的RTC&#xff08;Real-time…...

【数据结构】2-2-2 顺序表的插入删除查找

数据结构知识点合集 知识点 顺序表的插入 ListInsert(&L,i,e)&#xff1a;插入操作。在表L中的第i个位置上插入指定元素e。 /*在顺序表L的第i个位置插入元素e*/ bool ListInsert(SqList &L,int i,int e) {/*判断i的范围是否有效*/if(i<0||i>L.length)return fals…...

【免杀】C2免杀技术(五)动态API

一、什么是动态API 在C2免杀领域中&#xff0c;“动态API” 主要指的是绕过静态检测的一种技术手段&#xff0c;其本质是运行时动态解析和调用Windows API函数&#xff0c;而不是在程序编译阶段就明确引用这些API。这种方式可以有效躲避静态分析工具和杀软的签名识别。 为什么…...

77.数据大小端赋值的差异与联系

上述赋值a定义为大端模式 a[7] a[6] a[5] a[4] a[3] a[2] a[1] a[0] 上述赋值b定义为小端模式 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] 因为5的二进制数…...

GO语言语法---switch语句

文章目录 基本语法1. 特点1.1 不需要break1.2 表达式可以是任何类型1.3 省略比较表达式1.4 多值匹配1.5 类型switch1.6 case穿透1.7 switch后直接声明变量1.7.1 基本语法1.7.2 带比较表达式1.7.3 不带比较表达式1.7.4 结合类型判断 1.8 switch后的表达式必须与case语句中的表达…...

PH热榜 | 2025-05-16

1. Tolt 标语&#xff1a;专为SaaS初创公司打造的一体化联盟营销软件 介绍&#xff1a;Tolt帮助SaaS初创公司启动和发展联盟计划。它提供自动化的支付、欺诈保护、与多种平台的无缝集成&#xff08;包括Stripe、Paddle和Chargebee&#xff09;&#xff0c;还有一个品牌化的联…...

Java正则表达式:从基础到高级应用全解析

Java正则表达式应用与知识点详解 一、正则表达式基础概念 正则表达式(Regular Expression)是通过特定语法规则描述字符串模式的工具&#xff0c;常用于&#xff1a; 数据格式验证文本搜索与替换字符串分割模式匹配提取 Java通过java.util.regex包提供支持&#xff0c;核心类…...

iOS 初识RunLoop

iOS 初识RunLoop 文章目录 iOS 初识RunLoopRunLoop的概念RunLoop的功能RunLoop和线程的关系RunLoop的结构ModeObserverTimer 和 source小结 RunLoop的核心RunLoop的流程RunLoop的应用AutoreleasePool响应触控事件刷新界面常驻线程网络请求NSTimer 和 CADisplayLinkNSTimerGCDTi…...

备忘录模式

1.意图 备忘录模式是一种行为型设计模式&#xff0c;允许在不破坏封装的特性前提&#xff0c;获取并保存一个对象的内部状态&#xff0c;后续需要时恢复该状态。核心是将对象的状态存储在一个独立的备忘录对象中&#xff0c;并在需要时恢复。 2.模式类型 行为型对象设计模式 …...

UCOS 嵌入式操作系统

UCOS 嵌入式操作系统是一款在嵌入式领域应用广泛且具有重要地位的实时操作系统&#xff0c;以下是对它的详细介绍。 发展历程 初始版本诞生&#xff1a;UCOS 最早由美国嵌入式系统专家 Jean J. Labrosse 于 1991 年开始开发。当时他在项目中需要一个合适的实时操作系统&#…...

redis读写一致问题

title: redis读写一致问题 date: 2025-05-18 11:11:31 tags: redis categories: redis的问题方案 Redis读写一致问题 条件: 数据库此时的数据为10,redis此时的数据也为10 业务流程: 操作数据库使得数据库的数据为20&#xff0c;删除redis里面的数据保证读写一致 先删缓存…...

Redis实现分布式锁的进阶版:Redisson实战指南

一、为什么选择Redisson&#xff1f; 在上一篇文章中&#xff0c;我们通过Redis原生命令实现了分布式锁。但在实际生产环境中&#xff0c;这样的基础方案存在三大痛点&#xff1a; 锁续期难题&#xff1a;业务操作超时导致锁提前释放不可重入限制&#xff1a;同一线程无法重复…...

标准库、HAl库和LL库(PC13初始化)

标准库 (Standard Peripheral Library) c #include "stm32f10x.h"void GPIO_Init_PC13(void) {GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStruct.GPIO_Pin GPIO_Pin_13;GPIO_InitStruct.GPIO_Mode GPIO_…...

第二章:安卓端启动流程详解与疑难杂症调试手册

想让一个安卓项目跑起来&#xff0c;从表面看无非就是&#xff1a;双击打开、连接真机、点击运行。 但是到了互动娱乐组件项目里&#xff0c;事情就变成了&#xff1a;点击运行→等待→黑屏→白屏→强制退出→LogCat爆炸→你怀疑人生。 本章就来系统性解决几个问题&#xff1…...

备份C#的两个类

GuestIP依赖项&#xff1a; using System.Data.SQLite; //这是第三方依赖项&#xff0c;要从nuget下载 static class GuestIP {public static void ReadLastGuestIP(string constr "Data Sourceguestip_log.db;"){using (var connection new SQLiteConnection(co…...

通过串口设备的VID PID动态获取串口号(C# C++)

摘要 本篇文章主要介绍分别通过C#和C++使用设备VID PID如何动态获取COM口 目录 1 简述 2 VID PID查看方式 3 C#实现通过串口设备的VID PID动态获取串口号 3.1 辅助类实现 3.2 调用实例 4 C++实现通过串口设备的VID PID动态获取串口号 4.1 辅助类实现 4.2 调用实例 1 简…...

C语言指针深入详解(二):const修饰指针、野指针、assert断言、指针的使用和传址调用

目录 一、const修饰指针 &#xff08;一&#xff09;const修饰变量 &#xff08;二&#xff09;const 修饰指针变量 二、野指针 &#xff08;一&#xff09;野指针成因 1、指针未初始化 2、指针越界访问 3、指针指向的空间释放 &#xff08;二&#xff09;如何规避野指…...

《P5283 [十二省联考 2019] 异或粽子》

题目描述 小粽是一个喜欢吃粽子的好孩子。今天她在家里自己做起了粽子。 小粽面前有 n 种互不相同的粽子馅儿&#xff0c;小粽将它们摆放为了一排&#xff0c;并从左至右编号为 1 到 n。第 i 种馅儿具有一个非负整数的属性值 ai​。每种馅儿的数量都足够多&#xff0c;即小粽…...

C#自定义扩展方法 及 EventHandler<TEventArgs> 委托

有自定义官方示例链接&#xff1a; 如何实现和调用自定义扩展方法 - C# | Microsoft Learn 1.静态类 2.静态方法 3.第一参数固定为this 要修改的类型,后面才是自定的参数 AI给出的一个示例&#xff1a;没有自定义参数 、有自定义参数的 using System; using System.Colle…...

oracle 资源管理器的使用

14.8.2资源管理器的使用 资源管理器控制CPU资源使用说明&#xff1a;  第一种分配方法&#xff1a;EMPHASIS CPU 分配方法确定在资源计划中对不同使用者组中的会话的重视程度。CPU占用率的分配级别为从1 到8&#xff0c;级别1 的优先级最高。百分比指定如何将CPU 资源分配给每…...

(二十一)Java集合框架源码深度解析

一、集合框架概述 Java集合框架(Java Collections Framework, JCF)是Java语言中用于存储和操作数据集合的一套标准架构。它提供了一组接口、实现类和算法&#xff0c;使开发者能够高效地处理各种数据结构。 1.1 集合框架的历史演变 在Java 1.2之前&#xff0c;Java只有几种简…...