CRT

#include<bits/stdc++.h>
#define il inline
#define ri register int
#define ru register unsigned int
#define int long long
#define debug printf("Now is %d\n",__LINE__);
#define random(a,b) ((a)+rande()%((b)-(a)+1))
using namespace std;
int n,mod[12],rem[12],M=1,ans;
il void exgcd(int a,int b,int &x,int &y)
{
    if(b==0) return x=1,y=0,void();
    exgcd(b,a%b,y,x),y-=a/b*x;
}
signed main()
{
    scanf("%lld",&n);
    for(ru i=1;i<=n;++i) scanf("%lld%lld",&mod[i],&rem[i]),M*=mod[i];
    for(ru i=1;i<=n;++i)
    {
        int mi=M/mod[i],x,y,ci;
        exgcd(mi,mod[i],x,y),x=(x%mod[i]+mod[i])%mod[i];
        ci=mi*x;
        ans+=ci*rem[i]%M,ans%=M;
    }
    printf("%lld",ans%M);
    return 0;
 } 
 
posted @   Bertidurlah  阅读(93)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示