荒岛野人题解
荒岛野人题解 我真的是sha diao,这也没看出来, 两个野人不相遇,即是他们位置+走的步数mod m不相同,即不同余, 那我们只要枚举m,找出使条件满足的最小m不就行了 #include<bits/stdc++.h> using namespace std; const int N=20; int n,c[N],p[N],l[N],x,y,maxa=0; int exgcd(int a,int b,int &x,int &y){ if(!b){x=1,y=0; return a;} int o=exgcd(b,a%b,x,y); int t=x; x=y,y=t-(a/b)*y; return o; } bool check(int qq){ int q; for(int i=1;i<=n;++i) for(int j=i+1;j<=n;++j){ q=qq; int d=exgcd(p[i]-p[j],q,x,y); if((c[j]-c[i])%d) continue; q=q/d; int w=(c[j]-c[i])/d; if(q<0) q=-q; x=(x*w%q+q)%q; if(!x) x=q; if(x<=l[i]&&x<=l[j]) return false; } return true; } int main(){ scanf("%d",&n); for