Этот сайт — моя персональная записная книжка. Интересны мне, по большей части, программирование, история и события из моей жизни.

Дочка и домашка

Наблюдал сегодня как дочка делает домашку по математике. Мне редко удаётся за этим понаблюдать, так как обычно всё успевает в школе, но сегодня мы её забрали пораньше — она себя что-то чувствовала не очень хорошо.

Сделала всё обязательное, а так как до сна ещё оставалась какое-то время, решила сделать и задачку со звёздочкой. Я подсел ближе — стало интересно как она с ней справится.

Задание следующее: в 2021 году сумма цифр была 5, надо сказать через какое наименьшее число лет повторится такая же сумма тех же цифр, какой это будет год.

Решила, на мой взгляд, вполне эффективно — сначала выписала все варианты на первые две позиции — «10», «12», «20», «21», «22». Потом вычеркнула оттуда «10» и «12», потому что год получался в прошлом, следом убрала 20, где оба варианта не подошли, потом взяла «21», где взяла минимальный год из «2102» и «2120» и таким образом нашла правильный ответ.

Я, кстати, тоже никакого способа, кроме перебора, больше не знаю. На всякий случай перепроверил ответ на Пайтоне:

from itertools import permutations
print(min(x for x in (int(''.join(x)) for x in permutations('2021')) if x > 2021)) # 2102
3 комментария
Постоянный читатель 23 дн

Мы со второго по шестой класс водили ребёнка на Эврику (математика с логикой), когда-то отсканировал задачник для второго класса: https://photos.app.goo.gl/veYXrgyTirxFXRsL6 если вдруг интересно.

Евгений Степанищев 23 дн

Спасибо, но лучше пусть дочка побольше отдыхает) у неё и так слишком много занятий

Егор Петров 23 дн

По иден тут должно подойти решение, находящее лексикографически следующую перестановку (например, метод std::next_permutation из c++), что для больших величин будеь быстрее перебора всех перестановок

Евгений Степанищев 23 дн

А можно ли подробнее как это всё работает? Я, увы, не знаю как работает std::next_permutation.

Добавлено позднее: мне уже примерно показали как это может работать на Пайтоне.

Павел 22 дн

Условие звучит как-то... избыточно. Если «тех же цифр», то есть просто перестановка, то зачем вообще хоть что-то про сумму цифр?

Евгений Степанищев 22 дн

Я не знаю, может быть много вариантов, вплоть до того, что условие дочь записала неправильно. Из более вероятных — возможно детям надо закрепить какую-то тему, задачи для этого и пишутся, либо слово «перестановка» их путает или наоборот — надо запутать, чтобы задача решалась сложнее (это же задание «со звёздочкой»).