import random
# Установка сида для генерации точно таких же чисел, как в примере
random.seed(42)
# 1. Генерация 49 семизначных неповторяющихся чисел
elements = set()
while len(elements) < 49:
num = random.randint(1000000, 9999999)
elements.add(num)
elements = list(elements)
print("--- СГЕНЕРИРОВАННЫЕ ЭЛЕМЕНТЫ (49 чисел) ---")
# Выводим по 10 чисел в строку для читаемости
for i in range(0, len(elements), 10):
print(", ".join(map(str, elements[i:i+10])))
print("\n" + "="*50 + "\n")
# 2. Инициализация хеш-таблицы
t = 71 # Размер таблицы (ближайшее простое число > 49)
hash_table = [None] * t
# 3. Функция вставки с квадратичным опробованием
def insert_quadratic(table, size, key):
# Формула исследования: h(k, i) = (k % t + i^2) % t
base_hash = key % size
for i in range(size):
idx = (base_hash + i**2) % size
if table[idx] is None:
table[idx] = key
return True
return False # Если таблица переполнена или цикл не нашел место
# Заполнение хеш-таблицы
for element in elements:
insert_quadratic(hash_table, t, element)
# 4. Вывод хеш-таблицы на экран
print(f"--- ХЕШ-ТАБЛИЦА (Размер t = {t}) ---")
for index in range(t):
value = hash_table[index]
status = value if value is not None else "*пусто*"
print(f"Индекс {index:2d}: {status}")