Great Geek Game-show 3000!

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

드디어 당신이 "Great Geek Game-show 3000"에 출전할 참가자로 뽑혔다. 상금은 모든 참가자가 나누어 갖지만, 당신의 전략은 무작위로 찍는 것보다 훨씬 뛰어나므로 다른 참가자들을 설득해 함께 그 전략을 따르게 하고 상금의 대부분을 차지할 수 있다.

규칙은 다음과 같다. 무대 위에 $N$개의 상자가 있다. 각 상자에는 $N$명의 참가자 중 정확히 한 명의 이름이 들어 있고, 모든 참가자의 이름은 정확히 하나의 상자에 들어 있다. 즉 상자들은 참가자들의 한 순열을 이룬다. 참가자들은 한 명씩 무대에 오른다. 각 참가자는 최대 $K$개의 상자 안을 들여다볼 수 있다. 그중 한 상자에서 자기 이름을 찾으면 무대에서 내려가고 다음 참가자가 올라온다. 모든 참가자가 자기 이름을 찾으면 전원이 승리하고, 한 명이라도 찾지 못하면 전원이 패배한다. 경기가 시작된 뒤에는 참가자들끼리 어떤 정보도 주고받을 수 없지만, 시작 전에 미리 전략을 합의할 수는 있다.

상자 $K$개를 무작위로 여는 방법은 이길 확률이 매우 낮다. 그래서 당신은 더 나은 전략을 제안한다. 참가자와 상자에 각각 $1, \dots, N$의 번호를 매긴다. 각 참가자는 먼저 자신의 번호와 같은 번호의 상자를 연다. 그 상자 안에 적힌 번호가 다음에 열 상자를 알려 주고, 다시 그 상자 안의 번호가 그다음에 열 상자를 알려 주는 식으로 이어진다. 자기 번호를 찾거나 상자를 $K$개 열 때까지 이 과정을 반복한다.

모든 참가자가 이 전략을 따를 때, 전원이 승리할 확률을 구하라.

입력

한 줄에 두 정수 $N$과 $K$가 주어진다.

  • $1 \le N \le 10,000,000$ — 참가자 수.
  • $1 \le K \le N$ — 각 참가자가 열 수 있는 상자 수.

출력

모든 참가자가 전략을 따를 때 전원이 승리할 확률을 소수점 아래 여섯 자리로 반올림하여 출력한다.