Given two circles of radius r and R, both have their centre at the origin. Now, given another circle of radius r1 and centre at (x1, y1). Check, if the third circle(circle of radius r1) lies completely inside the ring formed by two circles of radius r and R.
Examples :
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
Important : Concentric circles are those circles which have same centre. The region lying between two concentric circles is called annulus or the circular ring.

Example :
There are two concentric circles with their centre at origin(0, 0) and radius as r = 8 and R = 4.
1.) Circle 1 and 2 lies inside the ring.
2.) Circle 3 and 4 are outside the ring.
The complete figure can be visualised as given below :

Approach :
This problem can be solved using Pythagoras Theorem . Compute the distance between the centre of the circle and origin using Pythagoras theorem, suppose it is denoted by ‘dis’.
After computing the distance just check that the value of (dis – r1)> = r and (dis + r1)< = R. If both these conditions hold then the circle lies completely inside the ring.
C++
#include <bits/stdc++.h>
using namespace std;
bool checkcircle( int r, int R, int r1,
int x1, int y1)
{
int dis = sqrt (x1*x1+y1*y1);
return (dis-r1 >= R && dis+r1 <= r);
}
int main()
{
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
import java.io.*;
class ring
{
public static boolean checkcircle( int r, int R,
int r1, int x1, int y1)
{
int dis = ( int )Math.sqrt(x1 * x1 +
y1 * y1);
return (dis - r1 >= R && dis + r1 <= r);
}
public static void main(String args[])
{
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
import math
def checkcircle(r, R, r1, x1, y1):
dis = int (math.sqrt(x1 * x1 + y1 * y1))
return (dis - r1 > = R and dis + r1 < = r)
r = 8 ; R = 4 ; r1 = 2 ; x1 = 6 ; y1 = 0
if (checkcircle(r, R, r1, x1, y1)):
print ( "yes" )
else :
print ( "no" )
|
C#
using System;
class ring {
public static bool checkcircle( int r, int R,
int r1, int x1, int y1)
{
int dis = ( int )Math.Sqrt(x1 * x1 + y1 * y1);
return (dis - r1 >= R && dis + r1 <= r);
}
public static void Main()
{
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" );
}
}
|
PHP
<?php
function checkcircle( $r , $R , $r1 ,
$x1 , $y1 )
{
$dis = sqrt( $x1 * $x1 + $y1 * $y1 );
return ( $dis - $r1 >= $R && $dis + $r1 <= $r );
}
$r = 8; $R = 4;
$r1 = 2; $x1 = 6;
$y1 = 0;
if (checkcircle( $r , $R , $r1 , $x1 , $y1 ))
echo "yes" , "\n" ;
else
echo "no" , "\n" ;
?>
|
Javascript
<script>
function checkcircle(r, R, r1, x1, y1)
{
let dis = Math.sqrt(x1 * x1 +
y1 * y1);
return (dis - r1 >= R && dis + r1 <= r);
}
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" );
</script>
|
Time Complexity: O(log(n)) since using inbuilt sqrt function
Auxiliary Space: O(1)