import math


def half_angle_tangent(full_tangent):
    # http://m...content-available-to-author-only...m.com/Half-AngleFormulas.html
    return (math.sqrt(1 + full_tangent * full_tangent) - 1) / full_tangent


def n_subdivisions_perimeter(n):
    # seg_l/2 = r * tg(angle)
    # starting from 45° (tg = 1, 4 segments, cube)
    tang, subs = 1.0, 4
    for i in range(n):
        tang = half_angle_tangent(tang)
        subs *= 2
    return tang * 2 * subs


if __name__ == '__main__':
    for n in range(10):
        print('n={}: {}'.format(
            n,
            n_subdivisions_perimeter(n) / 2
        ))
