문제 링크

문제 설명

예시

[input]
3 10

[output]
0.145833333333


[input]
100000 5

[output]
0.999973749998

사고의 흐름

모범답안

1. 여기를 누르면 답이 보입니다
def getCount(a, b):
    count = 0
    while(True):
        if a < b:
            a = a*2
            count += 1
        else:
            return count

  
def answer(n, k):
    posibility = 0
    if (n >= k):
        posibility = 1/n * (n-k+1)
        for i in range(1, k):
            posibility += ((1)/(n))*((1/2)**(getCount(i, k)))
    else:
        for i in range(1, n+1):
            count = (getCount(i, k))
            posibility += 1/n*((1/2)**(getCount(i, k)))
    return posibility
        
n, k = map(int, input().split())
print(answer(n, k))
2. 여기를 누르면 답이 보입니다