中国剩余定理
#include<bits/stdc++.h> using namespace std; typedef long long LL; LL exgcd(LL a, LL b, LL &x, LL &y) { if (!b) { x = 1, y = 0; return a; } LL d = exgcd(b, a % b, y, x); y -= a / b * x; return d; } int main(){ int n; cin>>n; LL a1,m1; cin>>a1>>m1; bool no=false; for (int i = 1; i < n; i ++ ){ LL a2,m2; cin>>a2>>m2; LL k1,k2; LL d=exgcd(a1,a2,k1,k2); if((m2-m1)%d){ no=true; break; } LL t=a2/d; k1=k1*(m2-m1)/d; k1=(k1%t+t)%t; m1=a1*k1+m1; a1=abs(a1/d*a2); } if (no) printf("-1\n"); else printf("%lld\n", (m1 % a1 + a1) % a1); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示