A:签到。

#include<iostream> 
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<'0'||c>'9')) c=getchar();return c;}
int gcd(int n,int m){return m==0?n:gcd(m,n%m);}
int read()
{
    int x=0,f=1;char c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return x*f;
}
int T;
int main()
{
/*#ifndef ONLINE_JUDGE
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
#endif*/
    T=read();
    while (T--)
    {
        int n=read(),x=read(),y=read(),d=read();
        if (abs(y-x)%d==0) cout<<abs(y-x)/d<<endl;
        else
        {
            int ans=2000000000;
            if ((y-1)%d==0) ans=min(ans,(y-1)/d+(x-2)/d+1);
            if ((n-y)%d==0) ans=min(ans,(n-y)/d+(n-x-1)/d+1);
            if (ans==2000000000) cout<<-1<<endl;
            else cout<<ans<<endl;
        }
    }
    return 0;
}
View Code

相关文章: