Challenge: Random number generator
Subdomeniu: Probability (probability)
Scor cont: 5.0 / 5
Submission status: Accepted
Submission score: 1.0
Submission ID: 464719144
Limbaj: python3
Link challenge: https://www.hackerrank.com/challenges/random-number-generator/problem
Cerinta
**Random number generator**
There is an ideal random number generator, which given a positive integer M can generate any **real number** between 0 to M, and [probability density function](http://en.wikipedia.org/wiki/Probability_density_function) is uniform in [0, M].
Given two numbers A and B and we generate _x_ and _y_ using the random number generator with uniform probability density function [0, A] and [0, B] respectively, what's the probability that x + y is less than C? where C is a positive integer.
**Input Format**
The first line of the input is an integer N, the number of test cases.
N lines follow. Each line contains 3 positive integers A, B and C.
**Constraints**
All the integers are no larger than 10000.
**Output Format**
For each output, output a fraction that indicates the probability. The greatest common divisor of each pair of numerator and denominator should be 1.
**Sample Input**
3
1 1 1
1 1 2
1 1 3
**Sample Output**
1/2
1/1
1/1
Cod sursa
from fractions import Fraction as F
def postprocess(n):
if n.denominator == 1:
return str(n.numerator) + '/1'
else:
return n
for i in range(int(input())):
A, B, C = list(map(int,input().split()))
p, q = max([A, B]),min([A, B])
if A + B < C:
result = F(1, 1)
elif C <= A and C <= B:
result = F(C ** 2, 2 * A * B)
elif q <= C <= p:
result = F((2 * C - q) * q, 2 * A * B)
else:
result = F(1) - F((A + B - C) ** 2, 2 * A * B)
result = postprocess(result)
print(result)
HackerRank Probability – Random number generator
