P4777-[模板]扩展中国剩余定理(EXCRT)

正题

题目链接:https://www.luogu.org/problem/P4777


题目大意

求方程
{x≡a1(modb1)x≡a2(modb2)...x≡an(modbn)\begin{cases} x \equiv a_1\ ({\rm mod}\ b_1) \\ x\equiv a_2\ ({\rm mod}\ b_2) \\ ... \\ x \equiv a_n\ ({\rm mod}\ b_n)\end{cases}xa1 (mod b1)xa2 (mod b2)...xan (mod bn)
的解。


解题思路

我们考虑两个两个方程进行合并。

假设现在只有两个方程x≡a1(modb1),x≡a2(modb2)x\equiv a_1(\rm mod\ b_1),x\equiv a_2(\rm mod\ b_2)xa1(mod b1),xa2(mod b2)
⇒x=a1+k1b1=a2+k2b2\Rightarrow x=a_1+k_1b_1=a_2+k_2b_2x=a1+k1b1=a2+k2b2
⇒k1b1−k2b2=a2−a1\Rightarrow k_1b_1-k_2b_2=a_2-a_1k1b1k2b2=a2a1
然后用exgcdexgcdexgcd计算出来后合并成新的式子用于后面的合并。

最后可以将所有的合并成一个,再解它就好了。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1e5+100;
ll n,a[N],b[N],ans;
ll ksc(ll a,ll b,ll YMW)
{a%=YMW;b%=YMW;ll c=(long double)a*b/YMW;ll ans=a*b-c*YMW;if(ans<0) ans+=YMW;else if(ans>=YMW) ans-=YMW;return ans;
}
ll exgcd(ll a,ll b,ll &x,ll &y)
{if(!b){x=1;y=0;return a;}ll d=exgcd(b,a%b,x,y),z=x;x=y;y=z-a/b*y;return d;
}
void work()
{ll x,y,k,M=b[1];ans=a[1];for(ll i=2;i<=n;i++){ll A=M,B=b[i],c=(a[i]-ans%B+B)%B;ll d=exgcd(A,B,x,y),g=B/d;if(c%d){ans=-1;return;}x=ksc(x,c/d,g);ans+=x*M;M*=g;ans=(ans%M+M)%M;}
}
int main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++)scanf("%lld%lld",&b[i],&a[i]);work();printf("%lld",ans);
}

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

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

相关文章

dotnetcore+vue+elementUI 前后端分离 三(前端篇)

说明&#xff1a;本项目使用了 mysql employees数据库&#xff0c;使用了vue axois element UI 2.0 ,演示了 单页程序 架构 ,vue router 的使用&#xff0c;axois 使用&#xff0c;以及 element UI 控件的使用。通过这几种技术的组合&#xff0c;实现了对 employee 的增&…

SpringCloud Greenwich(一)注册中心之nacos、Zuul和 gateway网关配置

本项目是搭建基于nacos注册中心的springcloud&#xff0c;使用zuul网关和gateway网关。 一、框架搭建 &#xff08;1&#xff09;项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 &#xff08;2&#xff09;环境 nacos 1.4.1…

欢乐ssl暑假赛【2019.8.6】

前言 莫得前言 成绩 JJJ表示初中&#xff0c;HHH表示高中后面加的是几年级&#xff0c;只放前10 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCCDDDEEE111(J−3)WYC(J-3)WYC(J−3)WYC500500500100100100100100100100100100100100100100100100222(H−1)QYH(H-1)QYH(H…

Actor-ES框架:Ray-Handler-消息订阅器编写

消息订阅器&#xff1a;Ray是基于Event Sourcing设计的ES/Actor框架&#xff0c;消息发布后需要订阅处理&#xff0c;订阅器主要有以下两类&#xff1a;CoreHandler消息订阅器RabbitSubSubHandlerToReadHandler消息订阅器RabbitSubSQLToReadHandler&#xff08;ToReadHandler的…

nacos(十三)之naocs 1.4.1单机和集群部署配置

一、下载安装nacos Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos&#xff0c;还需要为此配置 Maven环境&#xff0c;请确保是在以下版本环境中安装使用: 64 bit OS&#xff0c;支持 Linux/Unix/Mac/Windows&#xff0c;推荐选用 Linux/Unix/Mac。64 bit J…

P3807-[模板]卢卡斯定理

正题 题目链接:https://www.luogu.org/problem/P3807 题目大意 求Cnmm%pC_{nm}^m\% pCnmm​%p LucasLucasLucas定理 Cnm%pC⌊np⌋⌊mp⌋∗Cn%pm%pC_{n}^m\% pC_{\lfloor \frac{n}{p}\rfloor}^{\lfloor \frac{m}{p}\rfloor}*C_{n\%p}^{m\%p}Cnm​%pC⌊pn​⌋⌊pm​⌋​∗Cn%pm…

Actor-ES框架:Actor编写-ESGrain与ESRepGrain

ESGrain生命周期Ray中ESGrain继承自Grain扩展了Grain的生命周期。Grain的生命周期参加文档附录&#xff1a;1-Grain生命周期-译注.mdESGrain重写了Grain的OnActivateAsync方法。ESGrain的初始化过程如下&#xff1a;初始化ESGrain中的State调用ReadSnapshotAsync()读快照。如果…

SpringBoot @Async加在实现接口类的非接口方法上获取Bean异常

一、场景复现 报错日志 *************************** APPLICATION FAILED TO START ***************************Description:A component required a bean of type com.mk.service.TestService that could not be found.Action:Consider defining a bean of type com.mk.ser…

DotNetAnywhere:可供选择的 .NET 运行时

我最近在收听一个名为DotNetRock 的优质播客&#xff0c;其中有以Knockout.js而闻名的Steven Sanderson 正在讨论 " WebAssembly And Blazor "。也许你还没听过&#xff0c;Blazor 正试图凭借WebAssembly的魔力将 .NET 带入到浏览器中。如果您想了解更多信息&#xf…

SpringCloud Greenwich(二)注册中心之consul、Zuul和 gateway网关配置

本项目是搭建基于consul注册中心的springcloud&#xff0c;使用zuul网关和gateway网关 一、框架搭建 &#xff08;1&#xff09;项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 &#xff08;2&#xff09;环境 consul 1.9.0…

jzoj6274-[NOIP提高组模拟1]梦境【贪心,堆】

正题 题目大意 nnn个区间mmm个点&#xff0c;一个区间只能匹配一个点&#xff0c;求最大匹配数。 解题思路 我们可以先将点排序&#xff0c;和区间按照左端点排序。然后从左往右枚举点&#xff0c;遇到一个区间的左端点就加入这样我们就可以忽略区间的左端点了&#xff0c;然后…

Actor-ES框架:消息发布器与消息存储器

消息发布器&#xff1a;Ray是基于Event Sourcing设计的ES/Actor框架&#xff0c;ESGrain状态&#xff08;State&#xff09;的修改、ESGrain之间的通信默认使用RabbitMQ通信。消息的发布器主要是RabbitPubESGrain。RabbitPub特性RabbitPub特性是RabbitMQ消息发布器。RabbitSub特…

consul的安装搭建

一、下载consul consul官网下载地址&#xff1a;https://www.consul.io/downloads 旧版本下载 consul 1.9.3直接下载地址&#xff1a; consul_1.9.3_windows_amd64.zip consul_1.9.3_linux_amd64.zip 二、安装 将consul_1.9.3_xxx.zip解压的xxx/consul目录 &#xff08;1&…

使用xUnit为.net core程序进行单元测试

一. 导读为什么要编写自动化测试程序&#xff08;Automated Tests&#xff09;&#xff1f;可以频繁的进行测试可以在任何时间进行测试&#xff0c;也可以按计划定时进行&#xff0c;例如&#xff1a;可以在半夜进行自动测试。肯定比人工测试要快。可以更快速的发现错误。基本上…

jzoj6276-[Noip提高组模拟1]树【线段树,扫描线,倍增】

正题 题目大意 一棵树&#xff0c;若干个点对&#xff0c;求不包括任何一个点对的路径数量。 解题思路 我们考虑将不合法的方案在坐标系上表示。 我们先只考虑一个点对(x,y)(x,y)(x,y)&#xff0c;若xxx和yyy没有祖先关系&#xff0c;则不合法的路径一个点在xxx的子树中&…

SpringCloud Greenwich(三)注册中心之zookeeper、Zuul和 gateway网关配置

本项目是搭建基于zookeeper注册中心的springcloud&#xff0c;使用zuul网关和gateway网关 一、框架搭建 &#xff08;1&#xff09;项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 &#xff08;2&#xff09;环境 zookeeper…

Metrics, tracing 和 logging 的关系

译者注Peter Bourgon原作&#xff1a; Metrics, tracing, and logging译者&#xff1a;吴晟原作发表时间&#xff1a; 2017年2月21日这是在OpenTracing和分布式追踪领域内广受欢迎的一篇博客文章。在构建监控系统时&#xff0c;大家往往在这几个名词和方式之间纠结。 通过这篇文…

jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】

正题 题目大意 有递推式fi∏j1kfi−jbjf_{i}\prod_{j1}^kf_{i-j}^{b_j}fi​j1∏k​fi−jbj​​ 给出f1∼kf_{1\sim k}f1∼k​和b1∼kb_{1\sim k}b1∼k​ 求fnf_nfn​ 解题思路 首先这题的指数如此之大所以不能直接存&#xff0c;而指数又不能直接模所以我们要用欧拉定理 (b…

快速序列化组件MessagePack介绍

简介MessagePack for C&#xff03;&#xff08;MessagePack-CSharp&#xff09;是用于C&#xff03;的极速MessagePack序列化程序&#xff0c;比MsgPack-Cli快10倍&#xff0c;与其他所有C&#xff03;序列化程序相比&#xff0c;具有最好的性能。 MessagePack for C&#xff…

SpringCloud Greenwich(四)注册中心之eureka、Zuul和 gateway网关配置

本项目是搭建基于eureka注册中心的springcloud&#xff0c;使用zuul网关和gateway网关 一、框架搭建 &#xff08;1&#xff09;项目结构 eureka-server eureka注册中心 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 &#xff08;…