def create_square_roots_table(modulus=18):
"""
"""
print("Елемент | 1-й корінь | 2-й корінь")
print("--------+------------+------------")
# Словник для зберігання квадратних коренів
roots_dict = {}
# Знаходимо всі квадрати та їх корені
for x in range(modulus):
square = (x * x) % modulus
if square not in roots_dict:
roots_dict[square] = []
roots_dict[square].append(x)
# Виводимо таблицю для елементів, що мають квадратні корені
for element in sorted(roots_dict.keys()):
roots = sorted(roots_dict[element])
if len(roots) == 1:
print(f"{element:7} | {roots[0]:10} | n/a")
else:
print(f"{element:7} | {roots[0]:10} | {roots[1]:10}")
def main():
print("Квадратні корені ")
print("=============================================")
create_square_roots_table(18)
if __name__ == "__main__":
main()
ZGVmIGNyZWF0ZV9zcXVhcmVfcm9vdHNfdGFibGUobW9kdWx1cz0xOCk6CiAgICAiIiIKICAgICIiIgogICAgcHJpbnQoItCV0LvQtdC80LXQvdGCIHwgMS3QuSDQutC+0YDRltC90YwgfCAyLdC5INC60L7RgNGW0L3RjCIpCiAgICBwcmludCgiLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSIpCiAgICAKICAgICMg0KHQu9C+0LLQvdC40Log0LTQu9GPINC30LHQtdGA0ZbQs9Cw0L3QvdGPINC60LLQsNC00YDQsNGC0L3QuNGFINC60L7RgNC10L3RltCyCiAgICByb290c19kaWN0ID0ge30KICAgIAogICAgIyDQl9C90LDRhdC+0LTQuNC80L4g0LLRgdGWINC60LLQsNC00YDQsNGC0Lgg0YLQsCDRl9GFINC60L7RgNC10L3RlgogICAgZm9yIHggaW4gcmFuZ2UobW9kdWx1cyk6CiAgICAgICAgc3F1YXJlID0gKHggKiB4KSAlIG1vZHVsdXMKICAgICAgICBpZiBzcXVhcmUgbm90IGluIHJvb3RzX2RpY3Q6CiAgICAgICAgICAgIHJvb3RzX2RpY3Rbc3F1YXJlXSA9IFtdCiAgICAgICAgcm9vdHNfZGljdFtzcXVhcmVdLmFwcGVuZCh4KQogICAgCiAgICAjINCS0LjQstC+0LTQuNC80L4g0YLQsNCx0LvQuNGG0Y4g0LTQu9GPINC10LvQtdC80LXQvdGC0ZbQsiwg0YnQviDQvNCw0Y7RgtGMINC60LLQsNC00YDQsNGC0L3RliDQutC+0YDQtdC90ZYKICAgIGZvciBlbGVtZW50IGluIHNvcnRlZChyb290c19kaWN0LmtleXMoKSk6CiAgICAgICAgcm9vdHMgPSBzb3J0ZWQocm9vdHNfZGljdFtlbGVtZW50XSkKICAgICAgICBpZiBsZW4ocm9vdHMpID09IDE6CiAgICAgICAgICAgIHByaW50KGYie2VsZW1lbnQ6N30gfCB7cm9vdHNbMF06MTB9IHwgbi9hIikKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmludChmIntlbGVtZW50Ojd9IHwge3Jvb3RzWzBdOjEwfSB8IHtyb290c1sxXToxMH0iKQoKZGVmIG1haW4oKToKICAgIHByaW50KCLQmtCy0LDQtNGA0LDRgtC90ZYg0LrQvtGA0LXQvdGWICIpCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IikKICAgIGNyZWF0ZV9zcXVhcmVfcm9vdHNfdGFibGUoMTgpCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbWFpbigp