题目:A. Vasya and Book
思路:
3种方式:直接跳,调到最前面再跳回来,跳到最后面再跳回来。
要注意x可能大于y,要写abs(y-x)。
代码:
#include<bits/stdc++.h>
using namespace std;#define read(x) scanf("%d",&x)int main() {
int T;read(T);while(T--) {
int n,x,y,d;read(n),read(x),read(y),read(d);int ans=1+(int)1e9;if(0==(y-x)%d) ans=min(ans,abs(y-x)/d);if(0==(y-1)%d) ans=min(ans,(y-1)/d+(x-1)/d+(0!=(x-1)%d));if(0==(n-y)%d) ans=min(ans,(n-y)/d+(n-x)/d+(0!=(n-x)%d));if((1+(int)1e9)==ans) printf("-1\n");else printf("%d\n",ans);}return 0;
}