In this post, we will solve Kundu and Bubble Wrap HackerRank Solution. This problem (Kundu and Bubble Wrap) is a part of HackerRank Functional Programming series.
Task
Kundu has a Bubble Wrap and like all of us she likes popping it. The Bubble wrap has dimensions NxM, i.e. it has N rows and each row has M cells which has a bubble. Initially all bubbles in filled with air and can be popped.
What Kundu does is randomly picks one cell and tries to pop it, there might be a case that the bubble Kundu selected is already popped. In that case he has to ignore this. Both of these steps take 1 second of time. Tell the total expected number of seconds in which Kundu would be able to pop them all.
Input
Input contains a single line containing two space seperated integers, N M, representing the dimension of Bubble wrap.
Output
Output the required answer in one line. The answer will be considered correct, if its absolute error doesn’t exceed 10-2.
Constraints
- 1 ≤ N, M ≤ 1000
Sample Input #00
1 1
Sample Output #00
1
Sample Input #01
1 2
Sample Output #01
3
Sample Input #02
2 2
Sample Output #02
8.3333333333
Explanation
Test Case #00: There is only one bubble, so he needs only one chance to pop it.
Test Case #01: Expected number of steps of popping two bubbles is 3.
Test Case #02: There are 4 bubbles with equal probability of popping out. Expected number of steps to pop all of them is 8.333333…
Solution – Kundu And Bubble Wrap – HackerRank Solution
Scala
import java.util.Scanner object Solution { val count = 100000000000000000L def main(args: Array[String]): Unit = { val sc = new Scanner(System.in) val m = sc.nextInt val n = sc.nextInt sc.close() val q = m * n println((1 to q).map(v => calc(v, q)).sum) } def calc(v: Int, q: Int): Double = { val pNo = (q - v).toDouble / q (1 - math.pow(pNo, count)) / (1 - pNo) } }
Note: This problem (Kundu and Bubble Wrap) is generated by HackerRank but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.