Задачи за тренинг
Задача 8а.
Социално-осигурителната система на България изиска всеки работещ
гражданин всеки месец да внася осигурителна вноска. Вноската е между 20
и 200 лева, което се определя като 10% от месечната заработка при
осигурителен минимум 200 лева и осигурителен максимум 2000 лева. Да се
напише програма, която извежда броят на работещите, чиято месечна
вноска е в зададен интервал.
Вход:
На входа се задава броя на месечните вноски - число,
по-малко от 6000000. Следва редица от числа - месечните вноски на
работещите в лева, които са числа между 20 и 200 с два знака след
десетичната точка. След това са зададени интервали, за които трябва да
се преброи колко вноски попадат в интервала. Броят на интервалите е
по-малък от 10000, а краищата им са числа между 20 и 200.
.
Изход:
За всеки интервал от входа се отпечатва броят вноски, които попадат в
него (включително на краищата му), за всеки интервал на отделен ред.
Пример:
10
20.50 30 40 52.35 160 200 23.2 20.50
20 155.25
20 40
30 30
100 120
52.35 60.2
20 200
Решение на примера:
6
1
0
1
10
Задача 8b.
Даден е текст на български език, който може да се запише във файл с
дължина 10 мегабайта. Да се намери броят на колизиите при хеширане на
думите от текста с повече от 3 букви
със следната хеш функция:
int hashCode(const char* p, int
len) // hash a character array
{
unsigned int h = 0;
for (int i = 0; i < len; i++)
{
h = (h << 5)|(h >> 27); // 5-bit
cyclic shift
h += (unsigned int)p[i]; // add in next
character
}
return abs(int(h)%60000);
}
Вход:
Задава се текстът на български език.
Изход:
Извеждат се следните числа: брой думи без колизии, брой колизии с две
думи, брой колизии с три думи и т.н. с разделител интервал.
Пример:
Даден е текст на
български език, който може да се запише във файл с дължина 10
мегабайта. Да се намери броят на колизиите при хеширане на думите от
текста с
повече от 2 букви със следната хеш функция: следната хеш функция; хеш
функция;
функция
Решение на примера:
18 1 0 1
Забележка: Една дума, която се среща 2 пъти в текста също
да се брои като колизия. Дума е низ
от букви, ограден с интервали и/или специални символи.