Número mínimo de vueltas de página para llegar a la página deseada

Dado un libro de N páginas, la tarea es calcular el número mínimo de vueltas de página para llegar a la página K deseada . Podemos comenzar a pasar las páginas desde el anverso del libro (es decir, desde la página 1) o desde el reverso del libro (es decir, la página número N). Cada página tiene dos lados, anverso y reverso, excepto la primera página, que solo tiene reverso y la última página que puede tener solo reverso dependiendo del número de páginas del libro. 
Ejemplos: 
 

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.

La idea es calcular la distancia de la página deseada desde el frente y desde la parte posterior del libro, mínimo de esto es la respuesta requerida. 
Ahora, considere que hay una página 0, que está al frente de la primera página. Y si N es par, considere que hay una página N+1, que está al final de la última página, por lo que el número total de páginas es N+1. 
Para calcular la distancia, 
1. Si K es par, distancia frontal = (K – 0)/2 y distancia trasera = (N – 1 – K)/2. 
2. Si K es impar, distancia frontal = (K – 1)/2 y distancia trasera = (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>

Producción : 
 

1

Complejidad de tiempo: O(1)
Espacio auxiliar: O(1) 
Este artículo es una contribución de Anuj Chauhan(anuj0503) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *