Probabilistic OR
Все знакомы с операцией OR. Давайте введем новую операцию, которую назовем Вероятностное OR, обозначаемую как #. Для заданного вещественного числа p (0 ≤ p ≤ 1) и двух битов a и b:
если a = 1 и b = 1, то #(a, b) = 1;
если a = 0 и b = 0, то #(a, b) = 0;
в противном случае #(a, b) = 0 с вероятностью p, и #(a, b) = 1 с вероятностью 1-p.
Теперь для двух заданных неотрицательных целых чисел x и y мы можем определить побитовую операцию Вероятностное OR. Результат этой операции — это число, полученное в результате применения операции # к каждой паре битов x и y на одинаковых позициях. Например, для p = 0.5, x = 2 и y = 4, мы можем получить 0, 2, 4 или 6 с вероятностью 0.25.
Вам предоставлен список неотрицательных целых чисел. Ваша задача — реализовать программу, которая вычислит ожидаемое значение результата выполнения побитовой вероятностной операции OR для всех этих чисел при заданном p. Числа обрабатываются слева направо.
Входные данные
Входной файл начинается с вещественного числа p (0 ≤ p ≤ 1) с точностью до двух знаков после запятой. Затем следует целое число n (1 ≤ n ≤ 100). Следующая строка содержит n чисел ai в порядке их участия в операции (0 ≤ a_i ≤ 10^9).
Выходные данные
Выведите ожидаемое значение выполнения Вероятностной операции OR для заданных чисел при заданном p. Напечатайте результат с точностью до двух знаков после запятой.