码迷,mamicode.com
首页 > 其他好文 > 详细

cf1082 A. Vasya and Book

时间:2019-08-18 23:43:04      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:ios   代码   int   image   ima   lse   turn   book   div   

中文题意:

技术图片

思路:我们先看看能不能直接从x翻到y,abs(y-x)%d==0,可以就直接输出abs(y-x)/d咯,不行的话之后有2种操作

1.先翻回到第一页,从第一页看看能不能范到y,不能的话翻到最后一页,倒回来翻看看能不能翻到y,不能的话这种方法不行;

2.翻到最后一页,倒回来看看能不能翻到y,不能的话翻到第一页,看看能不能从第一页翻到y,不能的话这方法不行;

如果1,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 }

 

cf1082 A. Vasya and Book

标签:ios   代码   int   image   ima   lse   turn   book   div   

原文地址:https://www.cnblogs.com/warmingtxdy/p/11374492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!