Get a guaranteed software dev job of ₹5-40 LPA | Apply now for free!

Miscellaneous Problem | Crossover Fantasy Universe | Codewindow.in

In a crossover fantasy universe, Houin Kyoma is up in a battle against a powerful monster Nomu that can kill him in a single blow. However being a brilliant scientist Kyoma found a way to pause time for exactly M seconds. Each second, Kyoma attacks Nomu with certain power, which will reduce his health points by that exact power. Initially Nomu has H Health Points. Nomu dies when his Health Points reach 0. Normally Kyoma performs Normal Attack with power A. Besides from Kyoma’s brilliance, luck plays a major role in events of this universe. Kyoma’s Luck L is defined as probability of performing a super attack. A super attack increases power of Normal Attack by C. Given this information calculate and print the probability that Kyoma kills Nomu and survives. If Kyoma dies print “RIP”.

Constraints:
0 < T <= 50
1 <= A, H, C, L1, L2 <= 1000
1 <= M <= 20.
L1<=L2

Input Format:
First line is integer T denoting number of test cases. Each test case consist of single line with space separated numbers A H L1 L2 M C. Where luck L is defined as L1/L2. Other numbers are, as described above.

Output Format:
Print probability that Kyoma kills Nomu in form P1/P2 where P1<=P2 and gcd(P1,P2)=1. If impossible, print “RIP” without quotes.

Example 1
Input:
2
10 33 7 10 3 2
10 999 7 10 3 2

Output:
98/125
RIP

Solution: In Python 3

from math import gcd,factorial
def ncr(n,r):
    return factorial(n)/(factorial(n-r)*(factorial(r)))
    
for i in range(int(input())):
    a,h,l1,l2,m,c = [int(i) for i in input().split()]
    num = 0
    den = pow(l2,m)
    if m*(a+c) < h:
        print("RIP")
    else:
        k,z = 0,m*a
        while z < h:
            z += c
            k += 1
    for i in range(k,m+1):
        if i == 0:
            num += pow(l2 - l1,m)
        elif i == m:
            num += pow(l1,i)
        else:
            num += (pow(l1,i)*pow(l2-l1,m-i)*ncr(m,i))
    x = gcd(int(num),den)
    print(str(int(num/x))+"/"+str(int(den/x)))

Also Checkout

Recent Posts