zoukankan      html  css  js  c++  java
  • A. Vasya and Book

    题目链接:http://codeforces.com/problemset/problem/1082/A

    题意:

    有一本书,页码是1到n。当前页的页码是x,要翻到第y页。规定:每次只能翻d页,向前向后翻均可。
    注:翻向第一页或者翻向最后一页的翻页操作可以无视上述规定。

    思路:

    这题其实就一个简单的模拟题。

    总共只可能出现三种情况:

    一、直接从x就可以翻到y

    二、x先翻到1 ,再从1翻到y

    三、x先翻到n,再从n翻到y

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <stdlib.h>
     4 #include <string>
     5 #include <string.h>
     6 #include <set>
     7 #include <queue>
     8 #include <stdbool.h>
     9 
    10 #define LL long long
    11 using namespace std;
    12 const int maxn = 1000 + 10;
    13 
    14 
    15 int main(){
    16     int T;
    17     int n,x,y,d;
    18     scanf("%d",&T);
    19     while (T--){
    20         int cnt = 0;
    21         int minxx = 0x3f3f3f3f;
    22         scanf("%d%d%d%d",&n,&x,&y,&d);
    23         if (abs(x - y) % d == 0)  // 如果直接就可以翻到
    24             minxx = min(minxx,abs(x - y) / d);
    25         if ((y - 1) % d == 0){ // 先翻到1再翻到y
    26             cnt += (x - 1) / d + (y - 1) / d;
    27             if((float)(x - 1)/ d != 0) // 如果不是整除的话就要再翻一次
    28                 cnt++;
    29             minxx = min(minxx,cnt);
    30         }
    31         cnt = 0;
    32         if ((n - y) % d == 0){ // 先翻到n再翻到y
    33             cnt += (n - y) / d + (n - x) / d;
    34             if((float)(n - x)/ d != 0)
    35                 cnt++;
    36             minxx = min(minxx,cnt);
    37         }
    38         if (minxx == 0x3f3f3f3f)
    39             printf("-1
    ");
    40         else
    41             printf("%d
    ",minxx);
    42     }
    43     return 0;
    44 }
  • 相关阅读:
    倒计时
    用css 添加手状样式,鼠标移上去变小手
    二维数组去重方法
    权限管理
    文件操作
    【十一章】:RabbitMQ队列
    【十一章】:Memcache、Redis
    【第十章】:I/O多路复用、异步I/O(综合篇)
    【模块】:paramiko
    【第九章】:线程、进程和协程
  • 原文地址:https://www.cnblogs.com/-Ackerman/p/11371479.html
Copyright © 2011-2022 走看看