Первая цифра после точки
Вы решили задачу. Теперь можно сравнить подходы.
Извлекаем цифру десятых из точного десятичного представления.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Цифра в точной десятичной записи
Decimal точно читает десятичную запись без арифметического округления. В as_tuple цифры хранятся отдельно от показателя степени десяти. После сдвига десятичной точки цифра десятых имеет индекс len(digits) + exponent; за пределами значащих цифр стоит ноль. Поддерживается и экспоненциальная запись.
from decimal import Decimal
parts = Decimal(input()).as_tuple()
index = len(parts.digits) + parts.exponent
print(parts.digits[index] if 0 <= index < len(parts.digits) else 0)
Время: O(L), L — длина входной записи. Память: O(L) для цифр и входа.
Другой способ: Развёрнутая запись числа
Разворачиваем экспоненциальную запись в обычную, затем берём первую цифру дробной части. Этот вариант проще читать, но очень большой показатель степени может создать длинную строку.
from decimal import Decimal
s = format(Decimal(input()), 'f')
fraction = s.partition('.')[2]
print(fraction[0] if fraction else '0')
Время: O(L + E), E — длина развёрнутой записи. Память: O(L + E).
На что обратить внимание
- Вещественное умножение или Decimal с ограниченной точностью могут округлить число перед выделением цифры.
- Если дробной части нет, ответ 0.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.