1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm>
using namespace std; typedef long long ll; const int maxn=20; ll n,ans,c[maxn],p[maxn],l[maxn]; ll (ll a,ll b) { return b==0?a:gcd(b,a%b); } void exgcd(ll a,ll b,ll &x,ll &y) { if(!b) {x=1;y=0;return;} exgcd(b,a%b,x,y); ll z=x;x=y;y=z-a/b*y; } ll mx=-1; void Get_Data() { scanf("%lld",&n); for(ll i=1;i<=n;i++) { scanf("%lld%lld%lld",&c[i],&p[i],&l[i]); mx=max(mx,c[i]); } } bool check(ll x) { for(ll i=1;i<=n;i++) { for(ll j=i+1;j<=n;j++) { ll A=p[j]-p[i]; ll B=x; ll C=c[i]-c[j]; ll X=0,Y=0; ll G=gcd(A,B); if(C%G==0) { A/=G;B/=G;C/=G; exgcd(A,B,X,Y); if(B<0) B=-B; X=((X*C)%B+B)%B; if(!X) X+=B; if(X<=min(l[i],l[j])) return 0; } } } return 1; } void Solve() { for(ll i=mx;;i++) { if(check(i)) { printf("%lldn",ans=i); return ; } } } int main() { Get_Data(); Solve(); return 0; }
|
近期评论