cf1082 A. Vasyaとブック

中文题意:

思考:私たちは、直接出力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 }

 

おすすめ

転載: www.cnblogs.com/warmingtxdy/p/11374492.html