Два друга Кунал и Сатьям играют в интересную игру.Они по очереди вытягивают мяч из сумки, в которой изначально находится R красных шаров и G зеленых шаров.Каждый игрок поочередно рисует мяч и никогда не кладет его обратно.Человек, который первым нарисовал красные шары, побеждает.Сатьям всегда рисует первым.Если в сумке больше нет шаров, и никто не нарисовал красный шар, Сатьям побеждает.
Какова вероятность победы Сатьяма?
Input:
The first line will contain the number of test cases T.
The first line of each test case will contain a number R (number of red balls) and G(number of green balls )
Output
For each testcase, print the desired probability.
Ограничения:
1<=T<=10
0<=R,G<=10^3
Я пытался решить эту проблему на динамическом программировании, прошел несколько тестовых случаев, но не смог в других тестовых случаях из-за дробной разницы между моим ответом и фактическим ответом.например, один из правильных ответов для тестовых случаев - 0,877258, а вывод через мой код - 0,877216
. Это мой код для решения вопроса
def ways(l):
x=[]
if l[0]==0 or l[1]==0:
return format(1,".6f")
x.append(l[0]/(l[0]+l[1]))
x.append((l[1]/(l[0]+l[1]))*((l[1]-1)/(l[0]+l[1])))
total=l[0]+l[1]
sum1=x[0]
n=l[1]
for i in range(2,n+1):
if i%2==0:
f=round((x[i-1]*(l[0]/(total-i))),100)
#print("e ",f)
x.append(f)
sum1+=x[i]
#print(sum1)
if n-i==0:
return format(sum1,".6f")
else:
if n-(i-1)==1:
f=round((x[i-2]*((n-(i-1))/(total-(i-1)))),100)
#print("o ",f)
x.append(f)
sum1+=x[i]
return format(sum1,".6f")
else:
f=round((x[i-2]*((n-(i-1))/(total-(i-1)))*((n-i)/(total-i))),100)
#print("o ",f)
x.append(f)
return format(sum1,".6f")
t=int(input())
for x in range(t):
l=[int(i) for i in input().split()]
print(ways(l))
Напишите свой кодздесь
функция way вычисляет вероятность выигрыша.
this is the input to the program...
here 10 in the first line denotes the number of test cases
10
1 0
0 0
0 1
1000 0
0 1000
999 999
882 456
345 234
12 45
345 56
правильный вывод -
1.000000
1.000000
1.000000
1.000000
1.000000
0.666630
0.745750
0.712027
0.558313
0.877258
и вывод через мой код -
1.000000
1.000000
1.000000
1.000000
1.000000
0.666546
0.745685
0.711826
0.552211
0.877216
так как получить правильный вывод?