Determinar la posición de la tercera persona en un polígono regular de N lados

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: 

  1. Los vértices de este polígono regular se numeran del 1 al N en el sentido de las agujas del reloj.
  2. 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

Deja una respuesta

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