中国剩余定理

这个定理主要是用来解决找一个数 它能够满足题目要求模一些数等于题目要求的值。
`#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;

}`

全部评论

相关推荐

09-25 00:00
已编辑
电子科技大学 Java
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的 const flattern = (obj) => { const res = {}; const dfs = (curr, path) => { if(typeof curr === 'object' && curr !== null) { const isArray = Array.isArray(curr); for(let key in curr) { const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key; dfs(curr[key], newPath); } } else { res[path] = curr } } dfs(obj); return res; }
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务