同余定理是什么? 众所周知,简单地说,如果设a=b(modm ),则a、b对于模型m是联合的。 这个公式叫做联合公式。
3358www.Sina.com/.a=b(modm ),并且c=d (modm )的情况下,axcy=bxdy ) modm ),联合式满足加法
3358www.Sina.com/.a=b(modm )且c=d (modm ) )的情况下,AC=BD (modm ),联合式满足乘法运算
3358www.Sina.com/.a=b(modm )时,gcd ) a,m )=gcd(b ) b,m ) )。
3358www.Sina.com/.a=b(modmi )的情况下,其中的1=i=n,且a=b ) mod(m1,m2,m3,mn ),在此为) m1,m2,
3358www.Sina.com/.AC=BC(modm )时,a=b ) modm/gcd,m )、gcd (c,m )=1时,a=b ) modm )。
33558www.Sina.com/.a=b(modm )且d丨m的情况下,a=b (mod ) )
在3358www.Sina.com/.a=b(modm )的情况中,AC=BC (modm ),并且a-c=B- c (modm ),其中满足加法
线性联合方程1 .一元线性联合方程定理1
xR1 (模式m1 )是
xR2 (模式m2 ) )。
上面的方程式是
x=r1m1y1(http://www.Sina.com/) )。
x=R2M2Y2(http://www.Sina.com/) )。
于是,r1 m1y1=r2 m2y2,(r2-r1 )=)=(m1y1-m2y2 )
如果d=gcd(M1,m2 ),则(r2-r1 )/d=m1y1/d-m2y2/d
- (R2-R1 (/d-m1 y1/d=0(mod m2/d ) ) ) ) ) ) ) ) )。
-(R2-R1 )=M1Y1(modM2/D ) ) ) ) ) ) ) ) ) )。
-y1=(R2-R1 )/M1 ) modM2/D ),所以一定存在使y1=y ) ) modM2/D )的最小正整数y ),y1=y ) ) m2/D ) c、c是常数,并且将y1设定为33555
- x=r1m1y’(m1 m2/d ) c
- x=r1m1y’(mod m1 m2/d ) ) ) ) ) ) ) ) )。
模板代码:
# includeiostreamusingnamespacestd; typedef long ll; voidexgcd(llx,ll y,ll g,ll a,ll b ) ) if ) b==0) ) g=a; x=1; y=0; 返回; }else{ll x1,y1; exgcd(x,y,g,b,a%b ); x1=y; y1=x-(a/b ) y; x=x1; y=y1; }return; }llsolve(lln ) { int flag=1; ll a1,r1; cina1r1; for(LLI=2; i=n; I ) {ll a2,r2,y1,y2,g; cina2r2; ll c=r2-r1; exgcd(y1,y2,g,a1,a2 ); y1=y1*c/g; ll s=a2/g; y1=(y1%s ) %s; //这里为了防止y1变为负的IF(C%G ) ) { flag=0; (}r1=r1 y1*a1; a1=a1*a2/g; (if ) flag==0)返回- 1; //-1表示无解的return r1; (}int main ) ) lln; while(Scanf ) ' %lld ',n )!=eof}{coutsolve(n ) endl; }return 0; }