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