Dado ‘N’ que representa el polígono regular de N lados. Dos niños están parados en el vértice ‘A’ y ‘B’ de este polígono regular de N lados. La tarea es determinar el número de ese vértice en el que debe pararse otra persona para que la suma de los saltos mínimos necesarios para llegar a A y los saltos mínimos necesarios para llegar a B se minimice.
Nota:
- Los vértices de este polígono regular se numeran del 1 al N en el sentido de las agujas del reloj.
- Si hay varias respuestas, genera el vértice menos numerado.
Ejemplos:
Input: N = 6, A = 2, B = 4 Output: Vertex = 3 Explanation: The another person should stand on 3rd vertex. As from 3rd vertex, 1 jump is required to reach A and 1 jump is required to reach B. (See figure above) Input: N = 4, A = 1, B = 2 Output: Vertex = 3 Explanation: The another person should stand on 3rd or 4th vertex. But, as mentioned above we have to print least numbered vertex that's why the output is 3.
Acercarse:
- Simplemente calcule los saltos desde cada vértice, excepto los vértices A y B, ya que los niños están parados en esos vértices y almacene su suma en la variable de suma.
- Finalmente, imprima esa posición desde donde la suma de saltos es mínima.
C++
// C++ implementation of above approach #include <bits/stdc++.h> using namespace std; // Function to find out the // number of that vertices int vertices(int N, int A, int B) { int position = 0; int minisum = INT_MAX; int sum = 0; for (int i = 1; i <= N; i++) { // Another person can't stand on // vertex on which 2 children stand. if (i == A || i == B) continue; // calculating minimum jumps from // each vertex. else { int x = abs(i - A); int y = abs(i - B); // Calculate sum of jumps. sum = x + y; if (sum < minisum) { minisum = sum; position = i; } } } return position; } // Driver code int main() { int N = 3, A = 1, B = 2; // Calling function cout << "Vertex = " << vertices(N, A, B); return 0; }
Java
// Java implementation of above approach class GFG { // Function to find out the // number of that vertices static int vertices(int N, int A, int B) { int position = 0; int minisum = Integer.MAX_VALUE; int sum = 0; for (int i = 1; i <= N; i++) { // Another person can't stand on // vertex on which 2 children stand. if (i == A || i == B) continue; // calculating minimum jumps from // each vertex. else { int x = Math.abs(i - A); int y = Math.abs(i - B); // Calculate sum of jumps. sum = x + y; if (sum < minisum) { minisum = sum; position = i; } } } return position; } // Driver code public static void main(String[] args) { int N = 3, A = 1, B = 2; // Calling function System.out.println("Vertex = " + vertices(N, A, B)); } } // This code contributed by Rajput-Ji
Python
# Python3 implementation of above approach # Function to find out the # number of that vertices def vertices(N, A, B): position = 0 miniSum = 10**9 Sum = 0 for i in range(1, N + 1): # Another person can't stand on # vertex on which 2 children stand. if (i == A or i == B): continue # calculating minimum jumps from # each vertex. else: x = abs(i - A) y = abs(i - B) # Calculate Sum of jumps. Sum = x + y if (Sum < miniSum): miniSum = Sum position = i return position # Driver code N = 3 A = 1 B = 2 # Calling function print("Vertex = ",vertices(N, A, B)) # This code is contributed by mohit kumar
C#
// C# implementation of the approach using System; using System.Collections.Generic; class GFG { // Function to find out the // number of that vertices static int vertices(int N, int A, int B) { int position = 0; int minisum = int.MaxValue; int sum = 0; for (int i = 1; i <= N; i++) { // Another person can't stand on // vertex on which 2 children stand. if (i == A || i == B) continue; // calculating minimum jumps from // each vertex. else { int x = Math.Abs(i - A); int y = Math.Abs(i - B); // Calculate sum of jumps. sum = x + y; if (sum < minisum) { minisum = sum; position = i; } } } return position; } // Driver code public static void Main(String[] args) { int N = 3, A = 1, B = 2; // Calling function Console.WriteLine("Vertex = " + vertices(N, A, B)); } } /* This code contributed by PrinciRaj1992 */
PHP
<?php // PHP implementation of above approach // Function to find out the // number of that vertices function vertices($N, $A, $B) { $position = 0; $minisum = PHP_INT_MAX; $sum = 0; for ($i = 1; $i <= $N; $i++) { // Another person can't stand on // vertex on which 2 children stand. if ($i == $A || $i == $B) continue; // calculating minimum jumps from // each vertex. else { $x = abs($i - $A); $y = abs($i - $B); // Calculate sum of jumps. $sum = $x + $y; if ($sum < $minisum) { $minisum = $sum; $position = $i; } } } return $position; } // Driver code $N = 3; $A = 1; $B = 2; // Calling function echo "Vertex = ",vertices($N, $A,$B); // This code is contributed by Ryuga ?>
Javascript
<script> // Javascript implementation of above approach // Function to find out the // number of that vertices function vertices(N, A, B) { var position = 0; var minisum = Number.MAX_VALUE; var sum = 0; for(var i = 1; i <= N; i++) { // Another person can't stand on // vertex on which 2 children stand. if (i == A || i == B) continue; // calculating minimum jumps from // each vertex. else { var x = Math.abs(i - A); var y = Math.abs(i - B); // Calculate sum of jumps. sum = x + y; if (sum < minisum) { minisum = sum; position = i; } } } return position; } // Driver code var N = 3, A = 1, B = 2; // Calling function document.write("Vertex = " + vertices(N, A, B)); // This code is contributed by Ankita saini </script>
Producción:
Vertex = 3
Complejidad de tiempo: O(N)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por Naman_Garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA