# Задание №1

import math

последняя_цифра = 0

# размер_клетки_в_пикселях = [104, 108, 100, 101, 103, 104, 101, 100, 102, 105][последняя_цифра]
# расстояние_от_ВВ_до_СУС_в_пикселях = [170, 150, 161, 201, 220, 186, 162, 156, 177, 248][последняя_цифра]
# R1 = расстояние_от_ВВ_до_СУС_в_м = расстояние_от_ВВ_до_СУС_в_пикселях * 1000 / размер_клетки_в_пикселях
R1 = [1.62, 1.46, 1.59, 2.04, 2.16, 1.84, 1.57, 1.55, 1.75, 2.47][последняя_цифра] * 1000
R2 = [0.5, 0.5, 1.5, 0.8, 0.7, 0.6, 1.2, 0.7, 0.8, 0.6][последняя_цифра] * 1000
q = [35, 45, 40, 35, 30, 45, 40, 30, 45, 40][последняя_цифра] * 1_000_000
Q = [45, 50, 150, 75, 90, 70, 100, 60, 80, 55][последняя_цифра] * 1000

q_ув = q / 2
к = 0.1 / 1000
print(f'R1 = {R1 / 1000:.6g} км, R2 = {R2 / 1000:.6g} км')
print(f'q = {q / 1_000_000:.6g} кт, Q = {Q / 1000:.6g} т')
print(f'∆Ртнт_ф = {105 * (q_ув ** (1/3)) / R1 + 410 * q_ув ** (2/3) / (R1 ** 2) + 1370 * q_ув / (R1 ** 3):.6g} кПа')
print(f'Uтнт = {(74 * q / (R1 ** 2)) * math.e ** (-к * R1):.6g} кДж/м^2')
print(f'τ_си = {0.1 * q ** (1/3) / 100:.6g} с')  # τ читается как "тау"

К = (0.014 * R2 / Q ** (1/3)) * 10
if К < 2:
    print(f'∆Ргвс_ф = {233.3 / ((1 + 29.8 * К ** 3) ** 0.5 - 1):.6g} кПа')
else:
    print(f'∆Ргвс_ф = {22 / (К * (math.log10(К) + 0.158) ** 0.5):.6g} кПа')
print(f'Uгвс = {(74 * Q / (R2 ** 2)) * math.e ** (-к * R2):.6g} кДж/м^2')


def linear_interpolation(xs, ys, x_inp):
    xs, ys = zip(*sorted(zip(xs, ys)))
    for i, (x, y, nxt_x, nxt_y) in enumerate(zip(xs, ys, xs[1:], ys[1:])):
        if x <= x_inp <= nxt_x:
            return y + (x_inp - x) * (nxt_y - y) / (nxt_x - x)


r1 = linear_interpolation([10, 100, 500, 1000],
                          [40, 90, 150, 190],
                          Q / 1000)
r2 = linear_interpolation([10, 100, 500, 1000],
                          [68, 153, 255, 323],
                          Q / 1000)
print(f'Радиус зоны бризантного действия r1 = {r1:.6g} м')
print(f'Радиус зоны бризантного действия r2 = {r2:.6g} м')