中国剩余定理学习笔记
给定
这样的题怎么做呢?首先给出中国剩余定理的流程:
- 计算出所有
的积 。 - 计算出
。 - 计算出
关于 的逆元 。 - 计算出
。
证明:首先知道最后的通解一定是
那我们就求出了原同余方程组的一个最小非负整数解。
inline void exgcd(ll &x,ll &y,ll a,ll b){
if(!b){x=1;y=0;return;}
exgcd(y,x,b,a%b);y-=a/b*x;
}
ll n,a[20],b[20],s=1,ans=0;
int main(){
cin>>n;
for(ll i=1;i<=n;i++)cin>>a[i]>>b[i],s*=a[i];
for(ll i=1,x,y;i<=n;i++){
exgcd(x,y,s/a[i],a[i]);
ans=(ans+b[i]*s/a[i]*x%s)%s;
}
cout<<(ans%s+s)%s;
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战