시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 512 MB | 20 | 14 | 14 | 100.000% |
시간이 많은 그는 N개의 비트(0 또는 1을 가질 수 있는 변수)를 조작하는 일을 반복하고 있다. 지금까지 하던 것이 식상해진 그는 새로운 규칙으로 N개의 비트를 조작하려고 한다. 한 번의 조작이란 다음과 같은 작업을 의미한다.
예를 들어, 그가 가진 비트가 0,1,0이고 K = 3이라고 해보자.
위의 과정에서 알 수 있듯, 사실 비트의 순서가 어떻게 되어있는지는 크게 중요한 것이 아니고 개수가 중요하다. 그는 조작을 한 후에 모든 비트가 1이 되면 조작을 끝내고 자러 갈 것이다. 현재 비트 중에서 0인 것의 개수가 z개일 때 모든 비트를 1로 만들기 위한 조작 횟수의 기댓값을 구하는 프로그램을 작성하라.
첫 번째 줄에는 비트의 개수와 뽑게 되는 정수의 개수를 의미하는 두 자연수 N, K가 공백으로 구분되어 주어진다. K는 홀수이다. (1 ≤ N ≤ 100, 0 ≤ K ≤ 109)
N개의 줄에 걸쳐 답을 출력한다. z번째 줄에는 현재 비트 중에서 0인 것의 개수가 z개일 때 모든 비트를 1로 만들기 위해 필요한 조작 횟수의 기댓값을 출력한다. 정확한 판별을 위해, 답을 기약분수로 나타내었을 때 a/b가 된다면, (a × b-1) mod 1,000,000,007을 대신 출력하도록 한다. b-1은 b의 모듈러 곱셈에 대한 역원이다. 이 문제에서는 가능한 모든 입력에 대해 답이 존재한다.
1 1
1
2 1
3 4
5 99
812420891 724220653 692773316 452277443 513756160
Contest > kriiicon > 제4회 kriiicon 6번