호프집 선택

시간 제한1초메모리 제한128 MB

요약
n개의 술집에 대해 폴리아 항아리 방식으로 표를 던지는 과정을 시뮬레이션해 각 술집이 최종적으로 선택될 확률을 정확히 계산합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 확률, 시뮬레이션
정답자
아직 제출이 없습니다

문제

수업이 끝난 학생들이 함께 갈 호프집을 투표로 정한다. 호프집은 nn개가 있으며, 번호는 11번부터 nn번까지이다.

학생은 두 종류로 나뉜다.

  • 주도적인 학생: 각자 확실히 선호하는 호프집이 하나 있고, 언제나 그 호프집에 표를 던진다. 여러 주도적인 학생이 같은 호프집에 표를 던질 수도 있다. 주도적인 학생들의 투표가 모두 끝나면 ii번 호프집이 받은 표의 수 aia_i가 정해진다.
  • 주도적이지 않은 학생: 남은 학생들은 주변의 눈치를 보며 확률적으로 투표한다. 이들은 한 명씩 차례대로 투표하는데, 지금 투표하는 학생이 ii번 호프집을 고를 확률은 (그 순간까지 ii번 호프집이 받은 표의 수) / (그 순간까지 던져진 전체 표의 수) 이다.

모든 학생이 투표를 마치면 가장 많은 표를 받은 호프집이 선택된다. 만약 최다 득표 호프집이 여러 개이면, 그 호프집들 중 하나가 균등한 확률로 무작위로 선택된다.

예를 들어 학생이 일곱 명, 호프집이 세 개이고 그중 다섯 명이 주도적인 학생이라고 하자. 주도적인 학생들의 투표 결과 각 호프집의 득표가 (3,1,1)(3, 1, 1)이라면, 아직 주도적이지 않은 학생 두 명이 투표해야 한다.

첫 번째 학생이 11번을 고를 확률은 3/53/5, 22번과 33번을 고를 확률은 각각 1/51/5이다. 이 학생이 33번을 골랐다면 득표는 (3,1,2)(3, 1, 2)가 된다. 두 번째 학생이 11번을 고를 확률은 3/63/6, 22번은 1/61/6, 33번은 2/62/6이다. 이 학생도 33번을 골랐다면 득표는 (3,1,3)(3, 1, 3)이 되고, 11번과 33번의 표가 같으므로 두 호프집이 각각 1/21/2의 확률로 선택된다.

호프집의 수, 학생의 수, 그리고 주도적인 학생들의 투표가 끝난 뒤 각 호프집이 받은 표가 주어질 때, 각 호프집이 최종적으로 선택될 확률을 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 입력의 끝까지 각 테스트 케이스를 처리해야 한다.

각 테스트 케이스의 첫째 줄에는 호프집의 수 nn (1≤n≤51 \le n \le 5)과 학생의 수 kk (1≤k≤501 \le k \le 50)가 주어진다. 둘째 줄에는 주도적인 학생들의 투표가 끝난 뒤 각 호프집이 받은 표 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다. 각 aia_i는 00 이상이며, 항상 ∑i=1nai≤k\sum_{i=1}^{n} a_i \le k를 만족한다. 또한 적어도 한 표는 던져져 있어 ∑i=1nai≥1\sum_{i=1}^{n} a_i \ge 1이다. 학생 kk명 중 주도적이지 않은 학생의 수는 k−∑i=1naik - \sum_{i=1}^{n} a_i이다.

출력

각 테스트 케이스에 대해, 호프집 11번부터 nn번까지 순서대로 그 호프집이 선택될 확률을 한 줄에 하나씩 출력한다. 각 줄은 pub i: p % 형식이며, ii는 호프집 번호, pp는 선택될 확률을 백분율로 나타낸 값이다.

pp는 (확률 ×100\times 100)을 소수점 셋째 자리에서 반올림하여 소수점 둘째 자리까지 나타낸다. 반올림은 반올림 대상 숫자가 정확히 55일 때 올리는 방식(round half up)을 사용하며, 소수점 아래 두 자리를 항상 표시한다(예: 100.00, 0.00). 여러 테스트 케이스의 출력은 빈 줄 없이 이어서 출력한다.

예제7

  1. 예제 1

    입력
    3 7
    3 1 1
    
    예상 출력
    pub 1: 93.33 %
    pub 2: 3.33 %
    pub 3: 3.33 %
    
  2. 예제 2

    입력
    1 5
    2
    
    예상 출력
    pub 1: 100.00 %
    
  3. 예제 3

    입력
    2 4
    2 2
    
    예상 출력
    pub 1: 50.00 %
    pub 2: 50.00 %
    
  4. 예제 4

    입력
    3 6
    3 2 1
    
    예상 출력
    pub 1: 100.00 %
    pub 2: 0.00 %
    pub 3: 0.00 %
    
  5. 예제 5

    입력
    2 5
    2 1
    
    예상 출력
    pub 1: 83.33 %
    pub 2: 16.67 %
    
  6. 예제 6

    입력
    3 9
    1 1 1
    
    예상 출력
    pub 1: 33.33 %
    pub 2: 33.33 %
    pub 3: 33.33 %
    
  7. 예제 7

    입력
    3 7
    3 1 1
    2 4
    2 2
    
    예상 출력
    pub 1: 93.33 %
    pub 2: 3.33 %
    pub 3: 3.33 %
    pub 1: 50.00 %
    pub 2: 50.00 %