一道中国剩余定理的例题

Posted Kaiser

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道中国剩余定理的例题相关的知识,希望对你有一定的参考价值。

给你n对数,输入x,y就是%x意义下余y

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
typedef long long ll;
using namespace std;
ll ex_gcd(ll a,ll b,ll &x,ll &y)
{
    if (!b)
    {
        x=1,y=0;
        return a;
    }
    ll fzy=ex_gcd(b,a%b,x,y);
    ll t=x;
    x=y;y=t-a/b*y;
    return fzy;
}
int main()
{
    int t;
    ll z1,z2,z3,z4;
    while (cin>>t)
    {
        bool flag=0;
        scanf("%lld%lld",&z1,&z2);
        for (int i=1;i<t;i++)
        {
            scanf("%lld%lld",&z3,&z4);
            if (flag) continue;
            ll a=z1,b=z3,c=z4-z2;
            ll x,y;
            ll d=ex_gcd(a,b,x,y);
            if (c%d!=0)
            {
                flag=1;
                continue;
            }
            ll t=b/d;
            x=(x*(c/d)%t+t)%t;
            z2=z1*x+z2;
            z1=z1*(z3/d);
        }
        if (flag==1) cout<<-1<<endl;
        else cout<<z2<<endl;
    }
}

 

以上是关于一道中国剩余定理的例题的主要内容,如果未能解决你的问题,请参考以下文章

简述中国剩余定理

中国剩余定理-----孙子定理是啥?

数论--中国剩余定理

中国剩余定理推广到 模数不是两两互素之后,在有解的情况下 怎样求解?求高手指点,说的详细点。谢谢!

《夜深人静写算法》数论篇 - (20) 中国剩余定理

扩展中国剩余定理(扩展CRT)详解