Program to check if water tank overflows when n solid balls are dipped in the water tank
Last Updated :
13 Feb, 2023
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++
#include <bits/stdc++.h>
using namespace std;
void overflow( int H, int r, int h,
int N, int R)
{
float tank_cap = 3.14 * r * r * H;
float water_vol = 3.14 * r * r * h;
float balls_vol = N * (4 / 3) * 3.14 * R * R * R;
float vol = water_vol + balls_vol;
if (vol > tank_cap) {
cout << "Overflow" << endl;
}
else {
cout << "Not in overflow state"
<< endl;
}
}
int main()
{
int H = 10, r = 5, h = 5,
N = 2, R = 2;
overflow(H, r, h, N, R);
return 0;
}
|
Java
import java.util.*;
class GFG {
static void overflow( int H, int r, int h,
int N, int R)
{
double tank_cap = 3.14 * r * r * H;
double water_vol = 3.14 * r * r * h;
double balls_vol = N * ( 4 / 3 ) * 3.14 * R * R * R;
double vol = water_vol + balls_vol;
if (vol > tank_cap) {
System.out.println( "Overflow" );
}
else {
System.out.println( "Not in overflow state" );
}
}
public static void main(String[] args)
{
int H = 10 , r = 5 , h = 5 ,
N = 2 , R = 2 ;
overflow(H, r, h, N, R);
}
}
|
Python3
def overflow( H, r, h, N, R ):
tank_cap = 3.14 * r * r * H
water_vol = 3.14 * r * r * h
balls_vol = N * ( 4 / 3 ) * 3.14 * R * R * R
vol = water_vol + balls_vol
if vol > tank_cap:
print ( "Overflow" )
else :
print ( "Not in overflow state" )
H = 10
r = 5
h = 5
N = 2
R = 2
overflow (H, r, h, N, R)
|
C#
using System;
class GFG {
static void overflow( int H, int r, int h,
int N, int R)
{
double tank_cap = 3.14 * r * r * H;
double water_vol = 3.14 * r * r * h;
double balls_vol = N * (4 / 3) * 3.14 * R * R * R;
double vol = water_vol + balls_vol;
if (vol > tank_cap) {
Console.WriteLine( "Overflow" );
}
else {
Console.WriteLine( "Not in overflow state" );
}
}
public static void Main()
{
int H = 10, r = 5, h = 5,
N = 2, R = 2;
overflow(H, r, h, N, R);
}
}
|
PHP
<?php
function overflow( $H , $r , $h ,
$N , $R )
{
$tank_cap = 3.14 * $r *
$r * $H ;
$water_vol = 3.14 * $r *
$r * $h ;
$balls_vol = $N * (4/3) *
3.14 * $R *
$R * $R ;
$vol = $water_vol + $balls_vol ;
if ( $vol > $tank_cap )
{
echo "Overflow" , "\n" ;
}
else
{
echo "Not in overflow state" , "\n" ;
}
}
$H = 10; $r = 5; $h = 5;
$N = 2; $R = 2;
overflow ( $H , $r , $h , $N , $R );
?>
|
Javascript
<script>
function overflow(H, r, h,
N, R)
{
let tank_cap = 3.14 * r * r * H;
let water_vol = 3.14 * r * r * h;
let balls_vol = N * (4 / 3) * 3.14 * R * R * R;
let vol = water_vol + balls_vol;
if (vol > tank_cap) {
document.write( "Overflow" );
}
else {
document.write( "Not in overflow state" );
}
}
let H = 10, r = 5, h = 5,
N = 2, R = 2;
overflow(H, r, h, N, R);
</script>
|
Output :
Not in overflow state
Time Complexity: O(1)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...