exgcd板求调
查看原帖
exgcd板求调
746930
NO_OI_NO_LIFE楼主2024/3/18 23:47

输出不了,请帮忙看看,thx

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll n,c[20],p[20],l[20];

ll exgcd(ll a,ll b,ll &x,ll &y){
	if(!b){
		x=1;y=0;return a;
	}
	ll dd=exgcd(b,a%b,y,x);
	y-=a/b*x;
	return dd;
}

bool check(ll mod){
	for(int i=1;i<=n;++i){
		for(int j=i+1;j<=n;++j){
			ll a=c[j]-c[i];
			ll b=p[i]-p[j];
			ll mo=mod,x,y;
			ll d=exgcd(b,mo,x,y);
			if(a%d) continue;
			a/=d;mo/=d;
			if(mo<0) mo=-mo;
			x=(x*a%mo+mo)%mo;
			if(x<=min(l[i],l[j])) return 0;
		} 
	}
	return 1;
}

int main(){
	cin>>n;
	ll k=0;
	for(int i=1;i<=n;i++){
		cin>>c[i]>>p[i]>>l[i];
		k=max(k,c[i]);
	}
	for(int i=k; ;++k){
		if(check(i)){
			cout<<i<<endl;
//			return 0;
			break;
		}
	}
	return 0;
}
2024/3/18 23:47
加载中...