Triangle Quest

Разберём две математические задачи с Hackerrank: Triangle Quest и Triangle Quest 2.

Дано число от 1 до 9 и нужно вывести треугольники из чисел заданного вида. Для числа 4 в первой задаче:

а во второй:

Для вывода допустимо использовать только один цикл, процедуру print и математические операции:

Чтобы решить эти задачи, нужно научится генерировать строку треугольника по её номеру.

Количество цифр в строке треугольника пропорционально номеру строки. Возводя 10 в степень мы получаем число с заданным количество цифр. Но степень 10 нам не подходит, вот если бы можно было сгенерировать число заданной длины состоящее из единиц, то умножив его на номер строки мы бы получили требуемую строку.

Каким образом можно получить из числа 100 число 11? Из 100 вычитаем единицу и получаем 99, остаётся только поделить 99 на 9. Этот способ позволяет генерировать числа состоящие из единиц заданной длины.

Осталось собрать всё вместе:

Формулаi = 4
10 ** i10 ** 4 = 10000
10 ** i - 110000 - 1 = 9999
(10 ** i - 1) // 99999 // 9 = 1111
((10 ** i - 1) // 9) * i1111 * 4 = 4444

Решение можно упростить, убрав вычитание единицы, так как используется целочисленное деление. Но с вычитанием решение выглядит нагляднее.

После решения первой, вторая задача решается совсем просто. Достаточно заметить закономерность умножения чисел состоящих из единиц на самих себя:

  • 11 * 11 = 121
  • 111 * 111 = 12321
  • 1111 * 1111 = 1234321

Решение на Python:

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *