N개의 비트를 매 연산마다 정렬한 뒤 K개의 난수 인덱스로 뒤집을 때, 각 시작 상태의 0 개수마다 모두 1이 될 때까지의 기댓값을 구한다.
보통7확률동적 계획법조합론아직 제출이 없습니다시간 제한2초메모리 제한512 MB0 또는 1을 저장하는 변수를 비트라고 하자. N개의 비트를 다음 규칙으로 조작한다. 아래 세 단계를 모두 마치면 조작 한 번이 끝난다.
비트가 0, 1, 0이고 K=3인 경우를 보자. 먼저 정렬해서 0, 0, 1을 만든다. 뽑은 정수가 순서대로 1, 3, 1이라면 첫 번째 정수 1로 비트가 1, 0, 1이 되고, 두 번째 정수 3으로 1, 0, 0이 되며, 세 번째 정수 1로 0, 0, 0이 된다.
모든 조작이 정렬로 시작하므로 비트가 어떤 순서로 놓였는지는 중요하지 않고 0인 비트의 개수만 중요하다. 조작을 마친 뒤 모든 비트가 1이면 조작을 멈춘다. 0인 비트가 z개일 때 모든 비트를 1로 만들기까지 필요한 조작 횟수의 기댓값을 구하라.
첫째 줄에 비트의 개수 N과 한 번의 조작에서 뽑는 정수의 개수 K가 공백으로 구분되어 주어진다. K는 홀수이다. (1≤N≤100, 1≤K≤109)
N개의 줄에 답을 출력한다. z번째 줄에는 0인 비트가 z개일 때 모든 비트를 1로 만들기까지 필요한 조작 횟수의 기댓값을 출력한다. 기댓값을 기약분수 a/b로 나타냈을 때, (a×b−1)mod(109+7)을 출력한다. b−1은 109+7을 법으로 하는 b의 곱셈 역원이다. 주어지는 모든 입력에 대해 답이 존재한다.