Ах, эти загадочные цифры и их таинственные свойства! Представьте себе, вы сидите такой спокойненько, открываете файл с последовательностью целых чисел — от самых маленьких (да-да, аж до минус ста тысяч) до больших и грозных — и тут на вас смотрит задача: найти пары соседних чисел, в которых ровно одно заканчивается на 21 и при этом пятизначное. Представляете?
Не просто число, а пятизначное число, которое словно герой детского анекдота выходит на сцену с табличкой «21» на конце. А потом ещё и проверить сумму квадратов этих двух соседей — чтобы она была не меньше квадрата самого большого такого пятитысячника. Звучит как начало шутки: «Сидят два числа в файле…»
Знаете, эта задача напомнила мне старый анекдот про программиста: приходит он домой после тяжёлого дня и говорит жене — «Дорогая, сегодня я встретил число, которое заканчивается на 21 и было пятизначным!
И оно оказалось самым крутым из всех!» Жена смотрит на него как на сумасшедшего, но программист-то знает — это серьёзно!
Итак, приступим к разбору нашего весёлого приключения с числами. Сначала мы открываем файл (не забудьте положить его в ту же папку — иначе ваш компьютер устроит вам настоящее испытание!). Затем читаем все числа в список. Вот тут начинается магия: мы ищем максимальное число из тех, что заканчиваются на 21 и имеют ровно пять цифр по модулю.
Почему по модулю? Чтобы минусы не мешали нам считать цифры! Ведь у нас строгие критерии: если число вроде -12321 — оно тоже подходит!
Ну а дальше начинается настоящая игра в логические загадки.
Мы перебираем пары соседних чисел (потому что пара — это не просто два случайных числа, а именно два близких товарища). И проверяем условие «исключающего или» (XOR) — то есть ровно одно из них должно быть нашим знаменитым пятитысячником с окончанием 21. Это как если бы два друга решили пойти в кино: либо один идёт один, либо другой; вместе они не ходят!
Забавно представить эту логику применённой к числам.
А ещё нам надо удостовериться, что сумма квадратов этих двух героев больше или равна квадрату самого большого такого числа из всей последовательности. Тут я вспомнил историю про школьника Ваню, который однажды решил доказать маме свой успех в математике именно такими сравнениями: «Мама, смотри! Если сумма квадратов моих оценок за контрольные больше квадрата оценки Пети — значит я молодец!» Мама улыбнулась и дала ему шоколадку.
В итоге мы считаем количество таких пар и запоминаем максимальную сумму элементов среди них.
Начинаем с суммы -200000 (чтобы точно ничего не пропустить), ведь кто не любит начинать с самого низкого уровня? Это как прыгать с трамплина вниз — сначала страшно, а потом весело!
Итоговый ответ получился весьма достойным: 74 пары нашли наши герои-числа! А максимальная сумма элементов таких пар составила внушительные 103365.
Представляете? Можно было бы купить себе пару хороших компьютеров или хотя бы несколько килограммов мороженого.
Если вам стало интересно посмотреть видеоразбор этого кодового квеста — пишите в комментариях! Обещаю сделать это так же весело и понятно, как рассказываю сейчас.
Так что подписывайтесь на канал задачников-шутников и помните: программирование — это не только серьёзные вычисления и строгие условия.
Это ещё и повод посмеяться над странными требованиями типа «оканчивается на 21» или «ровно пять цифр». Ведь где ещё можно встретить такие забавные условия? Только в мире задач по информатике!