Given the dimensions of cylindrical water tank, spherical solid balls and the amount of water present in the tank check if water tank will overflow when balls are dipped in the water tank.
Examples :
input : H = 10, r = 5 h = 5 N = 2, R = 2 output : Not in overflow state Explanation : water tank capacity = 3.14 * r * r * H = 3.14 * 5 * 5 * 10 = 785 volume of water in tank = 3.14 * r * r * h = 3.14 * 5 * 5 * 5 = 392.5 Volume of balls = N * (4/3) * 3.14 * R * R * R = 2 * (4/3) * 3.14 * 2 * 2 * 2 = 67.02 Total volume of water + dip balls = 392.5 + 67.02 = 459.52 Total volume (459.02) < tank capacity (785) So, there is no overflow in tank input : H = 5, r = 3 h = 3 N = 3, R = 2 output : Overflow Explanation: water tank capacity = 3.14 * r * r * H = 3.14 * 3 * 3 * 5 = 141.3 volume of water in tank = 3.14 * r * r * h = 3.14 * 3 * 3 * 3 = 84.78 volume of balls = N * (4/3) * 3.14 * R * R * R = 3 * (4/3) * 3.14 * 2 * 2 * 2 = 100.48 Total volume of water + dip balls = 84.78 + 100.48 = 185.26 Total volume (185.26) > tank capacity (141.3) So, tank will overflow
Approach:
When solid balls are dipped in water, level of water increases, hence volume of water will also increase.
Increasing in water volume = Total volume of dip balls
Volume of Cylinder = 3.14 * r * r * h
where: r: radius of tank
h: height of tank
Number of balls are n
Balls have shape of Sphere
Volume of Sphere = (4/3) * 3.14 * R * R * R
Where R: Sphere’s(solid ball) radius
After dipping all balls, if the total volume of water and all balls is less than or equal to the total volume of tank capacity then there will no overflow in tank, otherwise there will be overflow.
Below is the implementation of above approach:
// C++ Program to check if water tank // overflows when n solid balls are // dipped in the water tank #include <bits/stdc++.h> using namespace std;
// function to find if tank will // overflow or not void overflow( int H, int r, int h,
int N, int R)
{ // cylinder capacity
float tank_cap = 3.14 * r * r * H;
// volume of water in tank
float water_vol = 3.14 * r * r * h;
// volume of n balls
float balls_vol = N * (4 / 3) * 3.14 * R * R * R;
// total volume of water
// and n dipped balls
float vol = water_vol + balls_vol;
/* condition to check if tank is in
overflow state or not */
if (vol > tank_cap) {
cout << "Overflow" << endl;
}
else {
cout << "Not in overflow state"
<< endl;
}
} // main function int main()
{ // giving dimensions
int H = 10, r = 5, h = 5,
N = 2, R = 2;
// calling function
overflow(H, r, h, N, R);
return 0;
} |
// JAVA Code for Program to check if // water tank overflows import java.util.*;
class GFG {
// function to find if tank will
// overflow or not
static void overflow( int H, int r, int h,
int N, int R)
{
// cylinder capacity
double tank_cap = 3.14 * r * r * H;
// volume of water in tank
double water_vol = 3.14 * r * r * h;
// volume of n balls
double balls_vol = N * ( 4 / 3 ) * 3.14 * R * R * R;
// total volume of water
// and n dipped balls
double vol = water_vol + balls_vol;
/* condition to check if tank is in
overflow state or not */
if (vol > tank_cap) {
System.out.println( "Overflow" );
}
else {
System.out.println( "Not in overflow state" );
}
}
/* Driver program to test above function */
public static void main(String[] args)
{
// giving dimensions
int H = 10 , r = 5 , h = 5 ,
N = 2 , R = 2 ;
// calling function
overflow(H, r, h, N, R);
}
} // This code is contributed by Arnav Kr. Mandal. |
# Python code to check if water tank # overflows when n solid balls are # dipped in the water tank # function to find if tak will # overflow or not def overflow( H, r, h, N, R ):
# cylinder capacity
tank_cap = 3.14 * r * r * H
# volume of water in tank
water_vol = 3.14 * r * r * h
# volume of n balls
balls_vol = N * ( 4 / 3 ) * 3.14 * R * R * R
# total volume of water
# and n dipped balls
vol = water_vol + balls_vol
# condition to check if tank is in
# overflow state or not
if vol > tank_cap:
print ( "Overflow" )
else :
print ( "Not in overflow state" )
# Driver code # giving dimensions H = 10
r = 5
h = 5
N = 2
R = 2
# calling function overflow (H, r, h, N, R) # This code is contributed by "Sharad_Bhardwaj". |
// C# Code for Program to check if // water tank overflows using System;
class GFG {
// function to find if tak will
// overflow or not
static void overflow( int H, int r, int h,
int N, int R)
{
// cylinder capacity
double tank_cap = 3.14 * r * r * H;
// volume of water in tank
double water_vol = 3.14 * r * r * h;
// volume of n balls
double balls_vol = N * (4 / 3) * 3.14 * R * R * R;
// total volume of water
// and n dipped balls
double vol = water_vol + balls_vol;
/* condition to check if tank is in
overflow state or not */
if (vol > tank_cap) {
Console.WriteLine( "Overflow" );
}
else {
Console.WriteLine( "Not in overflow state" );
}
}
/* Driver program to test above function */
public static void Main()
{
// giving dimensions
int H = 10, r = 5, h = 5,
N = 2, R = 2;
// calling function
overflow(H, r, h, N, R);
}
} // This code is contributed by vt_M. |
<?php // PHP Program to check if water tank // overflows when n solid balls are // dipped in the water tank // function to find if tank // will overflow or not function overflow( $H , $r , $h ,
$N , $R )
{ // cylinder capacity
$tank_cap = 3.14 * $r *
$r * $H ;
// volume of water in tank
$water_vol = 3.14 * $r *
$r * $h ;
// volume of n balls
$balls_vol = $N * (4/3) *
3.14 * $R *
$R * $R ;
// total volume of water
// and n dipped balls
$vol = $water_vol + $balls_vol ;
// condition to check if tank
// is in overflow state or not
if ( $vol > $tank_cap )
{
echo "Overflow" , "\n" ;
}
else
{
echo "Not in overflow state" , "\n" ;
}
} // Driver Code // giving dimensions $H = 10; $r = 5; $h = 5;
$N = 2; $R = 2;
// calling function overflow ( $H , $r , $h , $N , $R );
// This code is contributed by aj_36 ?> |
<script> // JavaScript program for Program to check if // water tank overflows // function to find if tak will
// overflow or not
function overflow(H, r, h,
N, R)
{
// cylinder capacity
let tank_cap = 3.14 * r * r * H;
// volume of water in tank
let water_vol = 3.14 * r * r * h;
// volume of n balls
let balls_vol = N * (4 / 3) * 3.14 * R * R * R;
// total volume of water
// and n dipped balls
let vol = water_vol + balls_vol;
/* condition to check if tank is in
overflow state or not */
if (vol > tank_cap) {
document.write( "Overflow" );
}
else {
document.write( "Not in overflow state" );
}
}
// Driver Code // giving dimensions
let H = 10, r = 5, h = 5,
N = 2, R = 2;
// calling function
overflow(H, r, h, N, R);
// This code is contributed by chinmoy1997pal. </script> |
Output :
Not in overflow state
Time Complexity: O(1)
Auxiliary Space: O(1)