Conteo de ángulos obtusos en un círculo con ‘k’ puntos equidistantes entre 2 puntos dados

Se da un círculo con k puntos equidistantes en su circunferencia. En el círculo se dan 2 puntos A y B. Encuentre la cuenta de todos los ángulos obtusos (ángulos mayores de 90 grados) formados a partir de /_ACB, donde C puede ser cualquier punto en el círculo que no sea A o B. 
Nota: 
A y B no son iguales. 
A < B. 
Los puntos están entre 1 y K (ambos inclusive).
 

Ejemplos: 
 

Input : K = 6, A = 1, B = 3.
Output : 1
Explanation : In the circle with 6 
equidistant points, when C = 2 i.e. 
/_123, we get obtuse angle.

Input : K = 6, A = 1, B = 4.
Output : 0
Explanation : In this circle, there 
is no such C that form an obtuse angle.

Se puede observar que si A y B tienen elementos iguales entre ellos, no puede haber ningún C tal que ACB sea obtuso. Además, el número de ángulos obtusos posibles es el arco más pequeño entre A y B.
A continuación se muestra la implementación: 
 

C++

// C++ program to count number of obtuse
// angles for given two points.
#include <bits/stdc++.h>
using namespace std;
 
int countObtuseAngles(int a, int b, int k)
{
    // There are two arcs connecting a
    // and b. Let us count points on
    // both arcs.
    int c1 = (b - a) - 1;
    int c2 = (k - b) + (a - 1);
 
    // Both arcs have same number of
    // points
    if (c1 == c2)
        return 0;
 
    // Points on smaller arc is answer
    return min(c1, c2);
}
 
// Driver code
int main()
{
    int k = 6, a = 1, b = 3;
    cout << countObtuseAngles(a, b, k);
    return 0;
}

Java

// Java program to count number of obtuse
// angles for given two points
class GFG {
 
    static int countObtuseAngles(int a,
                                 int b, int k)
    {
 
        // There are two arcs connecting a
        // and b. Let us count points on
        // both arcs.
        int c1 = (b - a) - 1;
        int c2 = (k - b) + (a - 1);
 
        // Both arcs have same number of
        // points
        if (c1 == c2)
            return 0;
 
        // Points on smaller arc is answer
        return min(c1, c2);
    }
 
    // Driver Program to test above function
    public static void main(String arg[])
    {
 
        int k = 6, a = 1, b = 3;
        System.out.print(countObtuseAngles(a, b, k));
    }
}
 
// This code is contributed by Anant Agarwal.

Python

# C++ program to count number of obtuse
# angles for given two points.
 
def countObtuseAngles( a, b, k):
    # There are two arcs connecting a
    # and b. Let us count points on
    # both arcs.
    c1 = (b - a) - 1
    c2 = (k - b) + (a - 1)
  
    # Both arcs have same number of
    # points
    if (c1 == c2):
       return 0
      
    # Points on smaller arc is answer
    return min(c1, c2)
  
# Driver code
k, a, b = 6, 1, 3
print countObtuseAngles(a, b, k)
 
# This code is contributed by Sachin Bisht

C#

// C# program to count number of obtuse
// angles for given two points
using System;
 
class GFG {
 
    static int countObtuseAngles(int a,
                           int b, int k)
    {
 
        // There are two arcs connecting
        // a and b. Let us count points
        // on both arcs.
        int c1 = (b - a) - 1;
        int c2 = (k - b) + (a - 1);
 
        // Both arcs have same number
        // of points
        if (c1 == c2)
            return 0;
 
        // Points on smaller arc is
        // answer
        return Math.Min(c1, c2);
    }
 
    // Driver Program to test above
    // function
    public static void Main()
    {
 
        int k = 6, a = 1, b = 3;
         
        Console.WriteLine(
           countObtuseAngles(a, b, k));
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program to count number
// of obtuse angles for given
// two points.
 
function countObtuseAngles($a, $b, $k)
{
    // There are two arcs connecting a
    // and b. Let us count points on
    // both arcs.
    $c1 = ($b - $a) - 1;
    $c2 = ($k - $b) + ($a - 1);
 
    // Both arcs have same number of
    // points
    if ($c1 == $c2)
        return 0;
 
    // Points on smaller arc is answer
    return min($c1, $c2);
}
 
// Driver code
$k = 6; $a = 1; $b = 3;
echo countObtuseAngles($a, $b, $k);
 
// This code is contributed by aj_36
?>

Javascript

<script>
 
// Javascript program to count number of obtuse
// angles for given two points   
function countObtuseAngles(a , b , k) {
 
        // There are two arcs connecting a
        // and b. Let us count points on
        // both arcs.
        var c1 = (b - a) - 1;
        var c2 = (k - b) + (a - 1);
 
        // Both arcs have same number of
        // points
        if (c1 == c2)
            return 0;
 
        // Points on smaller arc is answer
        return Math.min(c1, c2);
    }
 
    // Driver Program to test above function
 
        var k = 6, a = 1, b = 3;
        document.write(countObtuseAngles(a, b, k));
 
// This code is contributed by todaysgaurav
 
</script>

Producción : 

1

Tiempo Complejidad: O(1) 
Espacio Auxiliar: O(1)

Este artículo es una contribución de Aarti_Rathi y Rohit Thapliyal . 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 *