Количество информации можно определить как -log2(p), где p - вероятность данного события. Оно измеряется в битах.
Также можно использовать равносильное выражение log2(1/p)
Вероятность взятия чёрного шара равна 10/20 = 0,5, белого - 4/20 = 0,2, жёлтого такая же - 0,2, красного - в 2 раза меньше - 0,1.
Значит, если мы взяли чёрный шар, мы получили кол-во информации log2(1/0,5) = log2(2) = 1 бит,
если белый, то log2(1/0,2) = log2(5) = 2,3219 бит
если жёлтый, то столько же 2,3219 бит
если красный, то log2(1/0,1) = log2(10) = 3,3219 бит
<span>Чем меньше вероятность события, тем большее количество информации мы получаем, когда это событие наступает. </span>
Обьеденяют все компьютеры
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
struct StudentData
{
std::string name;
std::string surname;
int math;
int phys;
int comp_science;
};
bool
comp(const StudentData &a, const StudentData &b)
{
int tmp1 = a.math + a.phys + a.comp_science;
int tmp2 = b.math + b.phys + b.comp_science;
return tmp1 > tmp2 ? true : false;
}
int
main(void)
{
int n;
std::cin >> n;
std::vector< StudentData > data(n);
for (int i = 0; i < n; i++) {
std::cin >> data[i].name >> data[i].surname;
std::cin >> data[i].math >> data[i].phys >> data[i].comp_science;
}
std::sort(data.begin(), data.end(), comp);
for (int i = 0; i < n; i++) {
std::cout << data[i].name << " " << data[i].surname << std::endl;
}
return 0;
}
#!/usr/bin/python3
'''
пологаю, условие как есть: без пробелов, без OCR, без какого-либо форматирования
т.е. вводные строки текста выглядят так:
aaaaaayyyymmddbbbbbbbccccсрочныйeeee
я добавил поддержку некоторых разделителей в выражение, на случай если они
всётаки имеются
тестовые данные:
123456199601011234567987срочный000
123456199603291234567987срочный000
123456 1996-03-29 1234567 987 срочный 000
123456200109111234567987срочный000
тогда, решаем это с помощью регулярных выражений
как видно, в условии не сказано, что считать за код города. предположим,
что код города - это первая цифра от num2
'''
import re
import datetime
R = re.compile(
r'\s*(?P<num1>\d{6})\s*(?P<y>\d{4})\-?(?P<m>\d{2})\-?(?P<d>\d{2})\s*'
r'(?P<num2>\d{7})\s*'
r'(?P<time>\d+)\s*(?P<urgency>(срочный|обычный))\s*(?P<price>\d+)\s*'
)
d1 = datetime.datetime(1996, 3, 15)
d2 = datetime.datetime(1996, 4, 12)
while True:
a = ""
try:
a = input("введи> ")
except EOFError:
print("\n")
exit(0)
res = R.match(a)
if res == None:
print("ошибка парсинга")
continue
dd = datetime.datetime.now()
try:
dd = datetime.datetime(
int(res.group("y")),
int(res.group("m")),
int(res.group("d"))
)
except ValueError:
print("неправильная дата")
if res.group("urgency") == "срочный" and (dd > d1 and dd < d2):
n = res.group("num2")
print("номер1 {}, код {}, номер2 {}".format(
res.group("num1"), n[0], n[1:]))
маршрутов (1-1,1-2,1-3,2-1,2-2,2-3,3-1,3-2,3-3)