中文题意:
思考:私たちは、直接出力ABS(YX)することができ/ややD、ターンのyのx、ABS(YX)は%d == 0から直接見ることができる、2つの動作モードがあります後に動作しません。
1.まず、最後のページをめくるない場合は、ターンyのダウン元に戻すことができるかどうか、見、あなたがバンyをできるかどうかを確認するために、最初のページから、戻って最初のページに入れ、その後、このアプローチは動作しませんすることはできません。
2.あなたが最初のページからのyを回すことができるかどうかを確認、あなたが最初のページに、yのダウン戻っていない単語を回すことができるかどうかを確認し、最後のページをめくる、このメソッドは動作しませんすることはできません。
いずれかの方法は、他の方法は、出力することができますすることができない場合;すべての権利は、その行に出力の小さな数を回す2つの方法が動作しない場合は、yがページをめくる下回っている必要があります
Acはコードを添付しました:
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #define maxn 100 7 using namespace std; 8 int main(){ 9 int t;cin>>t; 10 int a,b,c,d; 11 int n,m,q,p; 12 while(t--){ 13 int x=0,y=0; 14 cin>>a>>b>>c>>d; 15 if(abs(b-c)%d==0){ 16 cout<<abs(b-c)/d<<endl; 17 continue; 18 } 19 else{ 20 if((b-1)%d==0)n=(b-1)/d; 21 else n=(b-1)/d+1; 22 if((c-1)%d==0)m=(c-1)/d; 23 else{ 24 if((a-1)%d==0)m=(a-1)/d; 25 else m=(a-1)/d+1; 26 if((a-c)%d!=0)x=-1; 27 else x=(a-c)/d; 28 } 29 if((a-b)%d==0)q=(a-b)/d; 30 else q=(a-b)/d+1; 31 if((a-c)%d==0)p=(a-c)/d; 32 else{ 33 if((a-1)%d==0)p=(a-1)/d; 34 else p=(a-1)/d+1; 35 if((c-1)%d!=0)y=-1; 36 else y=(c-1)/d; 37 } 38 } 39 if(x==-1&&y==-1)cout<<-1<<endl; 40 else cout<<min(n+m+x,q+p+y)<<endl; 41 } 42 return 0; 43 }