Автор: | Г. Гренкин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
В ДВФУ при оценке выполнения студентами заданий используется система AWorks, которая снижает баллы за не вовремя сданное задание. Однажды преподаватель решил больше не мучить студентов и разработал игру, в которой нужно уничтожать монстров, давая им задания.
Всего в игре M монстров, им даётся N заданий. Каждый монстр характеризуется успешностью pi — это вероятность, с которой он сдаст задание вовремя. За вовремя сданное задание монстр получает 1 балл, за не вовремя сданное задание — 0.5 балла. Монстру необходимо заработать не менее A баллов.
Какое количество монстров заработает не менее A баллов и не будут уничтоженными? Найдите распределение вероятностей.
Монстры действуют независимо друг от друга, и сдача одного задания не зависит от сдачи другого задания.
Входной файл содержит целые числа N A M, за которыми следуют M вещественных чисел pi.
Требуется вывести в выходной файл M + 1 пар чисел k ck, где k = 0, 1, ..., M, а ck — вероятность того, что ровно k монстров не будут уничтожены, с точностью до 5-ти знаков после запятой.
1 ≤ A ≤ N ≤ 10
1 ≤ M ≤ 10
0.01 ≤ pi ≤ 1
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Если монстр выполнил k заданий, то он получит 0.5(N − k) + k баллов, поэтому, чтобы закрыть сессию, нужно, чтобы 0.5(N − k) + k ≥ A, или k ≥ 2A − N.
Сначала найдём для каждого монстра индивидуальную вероятность закрытия сессии, которую обозначим Pi. Вероятность того, что монстр сдаст ровно k заданий, равна CkNpki(1 − pi)N − k. Поэтому вероятность Pi того, что i-й монстр закроет сессию, равна сумме этого выражения по k от s до N, где s = max{2A − N, 0}.
Далее, зная индивидуальные вероятности, найдём общее распределение вероятностей для всех монстров. Для этого рассмотрим элементарные события — переберём все возможные последовательности из M нулей и единиц. Ноль означает, что i-й монстр не закрыл сессию, а единица означает, что закрыл.
Для каждого элементарного события вычислим его вероятность, которая равна произведению чисел Pi в случае закрытия сессии и 1 − Pi в случае не закрытия. Пусть k — количество закрывших сессию. Тогда прибавим вычисленное произведение к элементу массива ck. В итоге мы переберём все возможные исходы сдачи сессии для всех монстров и сгруппируем эти исходы по количеству закрывших сессию монстров, вычислив вероятность для каждой группы.