Comprueba si un círculo dado se encuentra completamente dentro del anillo formado por dos círculos concéntricos.

Dadas dos circunferencias de radio r y R, ambas tienen su centro en el origen. Ahora, dada otra circunferencia de radio r1 y centro en (x1, y1). Compruebe si el tercer círculo (círculo de radio r1) se encuentra completamente dentro del anillo formado por dos círculos de radio r y R.
Ejemplos: 

Input : r = 8 R = 4
        r1 = 2 x1 = 6 y1 = 0
Output : yes

Input : r = 8 R = 4 
        r1 = 2 x1 = 5 y1 = 0
Output : no

Importante: Los círculos concéntricos son aquellos círculos que tienen el mismo centro. La región que se encuentra entre dos círculos concéntricos se llama anillo o anillo circular. 
 

circle (1)

Ejemplo: 
Hay dos círculos concéntricos con su centro en el origen (0, 0) y radio como r = 8 y R = 4. 
1.) Los círculos 1 y 2 se encuentran dentro del anillo. 
2.) Los círculos 3 y 4 están fuera del ring.
La figura completa se puede visualizar como se indica a continuación: 
 

circle

Enfoque: 
Este problema se puede resolver usando el Teorema de Pitágoras . Calcule la distancia entre el centro del círculo y el origen usando el teorema de Pitágoras, suponga que se denota por ‘dis’. 
Después de calcular la distancia, simplemente verifique que el valor de (dis – r1)> = r y (dis + r1)< = R. Si ambas condiciones se cumplen, entonces el círculo se encuentra completamente dentro del anillo.

C++

// CPP code to check if a circle
// lies in the ring
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if circle
// lies in the ring
bool checkcircle(int r, int R, int r1,
                        int x1, int y1)
{
    // distance between center of circle
    // center of concentric circles(origin)
    // using Pythagoras theorem
    int dis = sqrt(x1*x1+y1*y1);
     
    // Condition to check if circle is
    // strictly inside the ring
    return (dis-r1 >= R && dis+r1 <= r);
}
 
// Driver Code
int main()
{
    // Both circle with radius 'r'
    // and 'R' have center (0,0)
    int r = 8, R = 4, r1 = 2, x1 = 6, y1 = 0;   
    if (checkcircle(r, R, r1, x1, y1))
       cout << "yes" << endl;
    else
       cout << "no" << endl;
     
    return 0;
}

Java

// Java code to check if a
// circle lies in the ring
import java.io.*;
 
class ring
{
    // Function to check if circle
    // lies in the ring
    public static boolean checkcircle(int r, int R,
                            int r1, int x1, int y1)
    {
        // distance between center of circle
        // center of concentric circles(origin)
        // using Pythagoras theorem
        int dis = (int)Math.sqrt(x1 * x1 +
                                 y1 * y1);
         
         // Condition to check if circle
         // is strictly inside the ring
        return (dis - r1 >= R && dis + r1 <= r);
    }
     
    // Driver Code
    public static void main(String args[])
    {
        // Both circle with radius 'r'
        // and 'R' have center (0,0)
        int r = 8, R = 4, r1 = 2, x1 = 6, y1 = 0;
        
        if (checkcircle(r, R, r1, x1, y1))
            System.out.println("yes");
        else
            System.out.println("no");
    }
}

Python3

# Python3 code to check if
# a circle  lies in the ring
import math
 
# Function to check if circle
# lies in the ring
def checkcircle(r, R, r1, x1, y1):
 
    # distance between center of circle
    # center of concentric circles(origin)
    # using Pythagoras theorem
    dis = int(math.sqrt(x1 * x1 + y1 * y1))
     
    # Condition to check if circle is
    # strictly inside the ring
    return (dis-r1 >= R and dis+r1 <= r)
 
 
# Driver Code
 
# Both circle with radius 'r'
# and 'R' have center (0,0)
r = 8; R = 4; r1 = 2; x1 = 6; y1 = 0
if (checkcircle(r, R, r1, x1, y1)):
    print("yes")
else:
    print("no")
     
# This code is contributed by Smitha Dinesh Semwal.

C#

// C# code to check if a
// circle lies in the ring
using System;
 
class ring {
     
    // Function to check if circle
    // lies in the ring
    public static bool checkcircle(int r, int R,
                         int r1, int x1, int y1)
    {
        // distance between center of circle
        // center of concentric circles(origin)
        // using Pythagoras theorem
        int dis = (int)Math.Sqrt(x1 * x1 + y1 * y1);
 
        // Condition to check if circle
        // is strictly inside the ring
        return (dis - r1 >= R && dis + r1 <= r);
    }
 
    // Driver Code
    public static void Main()
    {
        // Both circle with radius 'r'
        // and 'R' have center (0, 0)
        int r = 8, R = 4, r1 = 2, x1 = 6, y1 = 0;
 
        if (checkcircle(r, R, r1, x1, y1))
            Console.WriteLine("yes");
        else
            Console.WriteLine("no");
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP code to check if a circle
// lies in the ring
 
// Function to check if circle
// lies in the ring
function checkcircle($r, $R, $r1,
                         $x1, $y1)
{
     
    // distance between center of circle
    // center of concentric circles(origin)
    // using Pythagoras theorem
    $dis = sqrt($x1 * $x1 + $y1 * $y1);
     
    // Condition to check if circle is
    // strictly inside the ring
    return ($dis-$r1 >= $R && $dis + $r1 <= $r);
}
 
    // Driver Code
    // Both circle with radius 'r'
    // and 'R' have center (0,0)
    $r = 8; $R = 4;
    $r1 = 2; $x1 = 6;
    $y1 = 0;
    if (checkcircle($r, $R, $r1, $x1, $y1))
     
    echo "yes" ,"\n";
    else
    echo "no" ,"\n";
     
// This code is contributed by ajit.
?>

Javascript

<script>
// JavaScript program code to check if a
// circle lies in the ring
 
// Function to check if circle
    // lies in the ring
    function checkcircle(r, R, r1, x1, y1)
    {
        // distance between center of circle
        // center of concentric circles(origin)
        // using Pythagoras theorem
        let dis = Math.sqrt(x1 * x1 +
                                 y1 * y1);
          
         // Condition to check if circle
         // is strictly inside the ring
        return (dis - r1 >= R && dis + r1 <= r);
    }
   
// Driver Code
 
        // Both circle with radius 'r'
        // and 'R' have center (0,0)
        let r = 8, R = 4, r1 = 2, x1 = 6, y1 = 0;
         
        if (checkcircle(r, R, r1, x1, y1))
            document.write("yes");
        else
            document.write("no");
 
// This code is contributed by splevel62.
</script>
Producción: 

yes

 

Complejidad de tiempo: O (log (n)) desde que se usa la función sqrt incorporada

Espacio Auxiliar: O(1)

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 *