4) 43301 или ГВЬА
Объяснение:
Самый основной изолировать предложенные варианты это просто взглянуть на первые две цифры и понять - могут ли они указывать на число вместе и по отдельности?
Таким образом:
1) 13102 может быть и 1 и 13
2) 29321 может быть 2 и 29
3) 171020 может быть 1 и 17
Однако:
4) 43301 может быть только 4 буква алфавита, потому что 43 буквы нет.
При этом дальше мы можем взять только 3, но не можем 33, потому что если взять 33 как последнюю букву алфавита, то следующая буква будет 0, чего быть не может, в результате чего это действительно единственный расшифровки данного набора цифр.
Конечно, для такой популярной задачи есть готовая имплиментация - например, она есть в пакете numpy, искомая функция numpy.std. Единственное, чтобы в знаменателе был n - 1, а не n, нужно добавить ddof=1
Можно посчитать и руками (и проверить, совпадает ли результат)
# python 3
from math import sqrt # квадратный корень
from numpy import std # готовая реализация для проверки
x = []
while True:
temp = int(input()) # считываем значение во временную переменную
x.append(temp) # добавляем в массив
if temp == 0: # если это 0, то это последний элемент массива
break
n = len(x) # количество элементов
s = sum(x) / n # среднее арифметическое
s2_1 = 0
for el in x:
s2_1 += (el - s) ** 2 # вычисление суммы квадратов, вариант 1
s2_2 = sum((el - s) ** 2 for el in x) # вычисление суммы квадратов, вариант 2
std_1 = sqrt(s2_1/(n - 1))
std_2 = sqrt(s2_2/(n - 1))
std_3 = std(x, ddof=1)
print(std_1) # первый вывод - вариант с вычислением суммы квадратов по методу 1
print(std_2) # второй вывод - вариант с вычислением суммы квадратов по методу 2
print(std_3) # третий вывод - готовая функция из библиотеки numpy
Пример ввода:
1
1
1
1
1
100
0
Пример вывода:
37.48332962798263
37.48332962798263
37.48332962798263