코드 수집

시간 제한2초메모리 제한256 MB

요약
N개의 코드 중 K개의 서로 다른 코드를 모을 때까지 필요한 뽑기 횟수의 기댓값을 N이 최대 10^18인 상황에서 구하는 문제입니다.
난이도

보통10점 중 6점

유형
확률, 수학, 조합론
정답자
아직 제출이 없습니다

문제

서로 다른 코드가 N종류 있다. 코드를 하나 얻을 때마다 N종류 중 하나가 같은 확률로 독립적으로 선택된다. 이미 얻은 코드가 다시 나올 수도 있다.

프로그래머는 서로 다른 코드 K종류만 모으면 숨겨진 위치를 알아낼 수 있다. 서로 다른 코드가 적어도 K종류 모일 때까지 필요한 코드 획득 횟수의 기댓값을 구하라.

입력

첫째 줄에 자연수 N과 K가 주어진다.

1 <= N <= 10^18, 1 <= K <= N이다.

출력

정답을 출력한다. 절대 오차 또는 상대 오차가 10^-9 이하이면 정답으로 인정된다.

예제4

  1. 예제 1

    입력
    4 3
    
    예상 출력
    4.333333333333333
    
  2. 예제 2

    입력
    1 1
    
    예상 출력
    1.0
    
  3. 예제 3

    입력
    2 1
    
    예상 출력
    1.0
    
  4. 예제 4

    입력
    2 2
    
    예상 출력
    3.0