Помогите с питоном. Фёдору нравится решать головоломки, в книге
Дата публикации:

Помогите с питоном. Фёдору нравится решать головоломки, в книге


Помогите с питоном. Фёдору нравится решать головоломки, в книге ''Занимательные задачи по информатике'' Фёдор нашел очень интересную задачу: дано число k(1≤k≤180) и последовательность цифр 10111213...9899, в которой выписаны подряд все двузначные числа. Вводится число k. Определите k-ю цифру (подсказка: используйте чётность/нечётность этого числа).

Чтобы решить данную задачу, можно использовать следующий алгоритм:

  1. Вводим число k.
  2. Инициализируем переменную count = 0, которая будет считать количество цифр, которые мы уже просмотрели.
  3. Инициализируем переменную num = 10, которая будет хранить текущее двузначное число.
  4. Инициализируем переменную digit = 0, которая будет хранить k-ю цифру.
  5. Инициализируем переменную is_even = False, которая будет хранить информацию о четности/нечетности текущего числа.
  6. Запускаем цикл 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.
  7. Выводим значение переменной 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-ю цифру последовательности.