Дата публикации:
Помогите с питоном. Фёдору нравится решать головоломки, в книге
Помогите с питоном. Фёдору нравится решать головоломки, в книге ''Занимательные задачи по информатике'' Фёдор нашел очень интересную задачу: дано число k(1≤k≤180) и последовательность цифр 10111213...9899, в которой выписаны подряд все двузначные числа. Вводится число k. Определите k-ю цифру (подсказка: используйте чётность/нечётность этого числа).
Чтобы решить данную задачу, можно использовать следующий алгоритм:
- Вводим число k.
- Инициализируем переменную count = 0, которая будет считать количество цифр, которые мы уже просмотрели.
- Инициализируем переменную num = 10, которая будет хранить текущее двузначное число.
- Инициализируем переменную digit = 0, которая будет хранить k-ю цифру.
- Инициализируем переменную is_even = False, которая будет хранить информацию о четности/нечетности текущего числа.
- Запускаем цикл while count < k:
- Если num < 100, то:
- Увеличиваем count на 2 (так как мы просмотрели две цифры).
- Если count >= k, то:
- Если k - count == 1, то устанавливаем is_even = True.
- Иначе, устанавливаем is_even = False.
- Прерываем цикл.
- Иначе, увеличиваем num на 1.
- Иначе, увеличиваем count на 1 (так как мы просмотрели одну цифру).
- Если count >= k, то:
- Если k - count == 1, то устанавливаем is_even = True.
- Иначе, устанавливаем is_even = False.
- Прерываем цикл.
- Иначе, увеличиваем num на 1.
- Если num < 100, то:
- Выводим значение переменной digit.
Вот пример реализации данного алгоритма на языке Python:
k = int(input("Введите число k: "))
count = 0
num = 10
digit = 0
is_even = False
while count < k:
if num < 100:
count += 2
if count >= k:
if k - count == 1:
is_even = True
else:
is_even = False
break
num += 1
else:
count += 1
if count >= k:
if k - count == 1:
is_even = True
else:
is_even = False
break
num += 1
if is_even:
digit = num % 10
else:
digit = num // 10
print("k-я цифра:", digit)
После запуска программы она запросит ввести число k, а затем выведет k-ю цифру последовательности.