中国剩余定理

这个定理主要是用来解决找一个数 它能够满足题目要求模一些数等于题目要求的值。
`#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(!b)
{
x=1,y=0;
return a;
}
ll d=exgcd(b,a%b,y,x);
y-=a/b*x;
return d;

}
int main()
{
int n;
cin>>n;
ll a1,m1;
cin>>a1>>m1;
bool has_mod = false;
for(int i=1;i<n;i++)
{
ll a2,m2;
cin>>a2>>m2;
ll k1,k2;
ll d=exgcd(a1,a2,k1,k2);
ll t=a2/d;
if((m2-m2)%d)
{
has_mod=true;
break;
}
k1*=(m2-m1)/d;
k1=(k1%t+t)%t;
m1=a1k1+m1;
a1=abs(a1/d
a2);
}
if(!has_mod)
cout<<(m1%a1+a1)%a1<<endl;
else
cout<<"-1"<<endl;
return 0;

}`

全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务