首页 > 代码库 > 模线性方程组
模线性方程组
有错。。
1 #include<cstdio> 2 #define ll long long 3 4 ll a,b,c; 5 ll x,y; 6 7 ll r[1010],m[1010]; 8 9 void exgcd(ll a,ll b,ll& d,ll &x, ll &y) 10 { 11 if(!b) 12 { 13 d=a; 14 x=1; 15 y=0; 16 } 17 else 18 { 19 exgcd(b,a%b,d,y,x); 20 y-=x*(a/b); 21 } 22 } 23 24 ll crt(ll m[],ll r[],int n) 25 { 26 ll M=m[1],R=r[1],x,y,d; 27 for(int i=2;i<=n;i++) 28 { 29 exgcd(M,m[i],d,x,y); 30 if( (r[i]-R)%d ) return -1; 31 x=(r[i]-R)/d*x%(m[i]/d); 32 R+=M*x; 33 M=M*m[i]/d; 34 R%=M; 35 } 36 return R>0?R:R+M; 37 } 38 39 int main() 40 { 41 int n; 42 while(scanf("%d",&n)!=EOF) 43 { 44 for(int i=1;i<=n;i++) 45 { 46 scanf("%lld%lld",&m[i],&r[i]); 47 } 48 ll ans=crt(m,r,n); 49 printf("%lld\n",ans); 50 } 51 52 }
模线性方程组
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。