Open In App

Minimum number of page turns to get to a desired page

Last Updated : 08 Feb, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given a book of N pages, the task is to calculate the minimum number of page turns to get to a given desired page K. We can either start turning pages from the front side of the book (i.e from page 1) or from the back side of the book (i.e page number N). Each page has two sides, front and back, except the first page, which has only back side and the last page which may only have back side depending on the number of pages of the book. 
Examples : 
 

Input : N = 6 and K = 2.
Output : 1.
From front, (1) -> (2, 3), page turned = 1.
From back, (6) -> (4, 5) -> (2,3), page turned = 2.
So, Minimum number of page turned = 1.

Input : N = 5 and K = 4.
Output : 1.
From front, (1) -> (2, 3) -> (4,5), page turned = 2.
From back, (4, 5) page turned = 1. From back, it is 2nd page, since 4 is on other side of page 5 and page 5 is the first one from back
So, Minimum number of page turned = 1.

 

The idea is to calculate distance of the desired page from the front and from the back of the book, minimum of this is the required answer. 
Now, Consider there is page 0, which is front of the first page. And if N is even, consider there is page N+1, which is back of the last page, so total number of pages are N+1. 
To calculate the distance, 
1. If K is even, front distance = (K – 0)/2 and back distance = (N – 1 – K)/2. 
2. If K is odd, front distance = (K – 1)/2 and back distance = (N – K)/2. 
 

C++




// C++ program to find minimum number of page
// turns to reach a page
#include<bits/stdc++.h>
using namespace std;
 
int minTurn(int n, int k)
{
    // Considering back of last page.
    if (n%2 == 0)
        n++;
 
    // Calculating Distance from front and
    // back of the book and return the min
    return min((k + 1)/2, (n - k + 1)/2);
}
 
// Driven Program
int main()
{
    int n = 6, k = 2;
    cout << minTurn(n,k) << endl;
    return 0;
}
 
// This code is modified by naveenkonda


Java




// Java program to find minimum
// number of page turns to
// reach a page
import java.io.*;
 
public class GFG
{
 
// Function to calculate
// minimum number of page
// turns required
static int minTurn(int n, int k)
{
     
    // Considering back of last page.
    if (n % 2 == 0)
        n++;
 
    // Calculating Distance from front and
    // back of the book and return the min
    Math.min((k + 1) / 2, (n - k + 1) / 2);
}
 
    // Driver Code
    static public void main (String[] args)
    {
        int n = 6, k = 2;
        System.out.println(minTurn(n, k));
    }
}
 
// This code is contributed by vt_m.


Python3




# Python3 program to find minimum number
# of page turns to reach a page
def minTurn(n, k):
     
    # Considering back of last page.
    if (n % 2 == 0):
        n += 1
 
    // Calculating Distance from front and
    // back of the book and return the min
    return min((k + 1) / 2, (n - k + 1) / 2)
 
# Driver Code
if __name__ == '__main__':
    n = 6
    k = 2
    print(int(minTurn(n, k)))
     
# This code is contributed by
# Surendra_Gangwar


C#




// C# program to find minimum
// number of page turns to
// reach a page
using System;
 
public class GFG
{
 
// Function to calculate
// minimum number of page
// turns required
static int minTurn(int n, int k)
{
     
    // Considering back of last page.
    if (n % 2 == 0)
        n++;                       
 
    // Calculating Distance from front and
    // back of the book and return the min
    return Math.Min((k + 1) / 2,
                    (n - k + 1) / 2);
}
 
    // Driver Code
    static public void Main (String[] args)
    {
        int n = 6, k = 2;
        Console.WriteLine(minTurn(n, k));
    }
}
 
// This code is contributed by vt_m.


PHP




<?php
// PHP program to find minimum number
// of page turns to reach a page
 
function minTurn($n, $k)
{
    // Considering back of last page.
    if ($n % 2 == 0)
        $n++;
 
    // Calculating Distance from front and
    // back of the book and return the min
    return min(($k + 1) / 2,
               ($n - $k + 1) / 2);
}
 
// Driver Code
$n = 6; $k = 2;
echo minTurn($n, $k) ;
 
// This code is contributed by nitin mittal.
?>


Javascript




<script>
 
// Javascript program to find minimum
// number of page turns to
// reach a page
 
// Function to calculate
// minimum number of page
// turns required
function minTurn(n, k)
{
       
    // Considering back of last page.
    if (n % 2 == 0)
        n++;
   
    // Calculating Distance from front and
    // back of the book and return the min
    let x = Math.min((k + 1) / 2, (n - k + 1) / 2);
    return Math.floor(x);
}
      
// Driver code   
 
        let n = 6, k = 2;
        document.write(minTurn(n, k));
                   
</script>


Output : 
 

1

Time Complexity : O(1)
Auxiliary Space: O(1) 

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads