WA#15求助
查看原帖
WA#15求助
32490
memory_frv楼主2021/6/8 18:02

最后输出了个-1,即判断出了个无解,实在找不出错误了

#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
ll mod[100001],lst[100001],n;
inline ll exgcd(ll a,ll b,ll &x,ll &y){
	if(b==0){
		x=1,y=0;return a;
	}
	ll res=exgcd(b,a%b,y,x);
	y-=(a/b)*x;
	return res;
}
inline ll excrt(){
	ll A=mod[1],R=lst[1],x,y;
	for(int i=2;i<=n;i++){
		ll gcd=exgcd(A,mod[i],x,y);
		if((lst[i]-R)%gcd) return -1;
		x=(lst[i]-R)/gcd*x;x=(x%(mod[i]/gcd)+(mod[i]/gcd))%(mod[i]/gcd);
		R=R+A*x;
		A=A/gcd*mod[i];R%=A;
	}
	return R;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>mod[i]>>lst[i];
	}
	cout<<excrt();
	return 0;
}
2021/6/8 18:02
加载中...