24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна.
Подробности случившегося. Мы призываем всех неравнодушных
помочь нам с восстановлением утраченного контента!
>>206071257
Очевидно, что решать в лоб это - проебать. (т.к. написать циклик перебора можно и в 7м классе)
Входящее значение N. Сумма первой половины sumPart1, сумма второй половины sumPart2. Разбивка N : [x1][x2][x3][y1][y2][y3].
Алгоритм такой.
1. Смотрим изначально, является ли y1 > sumPart1. Если да, то увеличиваем последний разряд первой части Тут же смотрим ошибку на переполнение в случае первой части 999 и пересчитываем sumPart1. Если нет, идем к пункту 4.
2. sumPart1 > 9, если нет - ответ: новая первая часть[][][] и [0][0][sumPart1]
3. Если да - ставим y3 = 9. Считаем rest = sumPart1 - y3. Если rest <= 9, ответ: новая первая часть[][][] и [0][rest][9]. Если rest > 9, ответ: новая первая часть[][][] и [sumPart1 - 18][9][9]
4. И так. Первая часть для ответа у нас уже есть. Подбираем ближайшую вторую.
Если sumPart1 - y1 < 18 , переходим к пункту 8. Иначе переходим к пункту 5.
5. restTwoDigits = sumPart1 - y1. Если restTwoDigits > 18, y1 = sumPart1 - 18
6. Если restTwoDigits <= 9, ответ [x1][x2][x3][y1][0][restTwoDigits]
7. В противном случае ответ [x1][x2][x3][y1][restTwoDigits - 9][9]
8. У нас [y1]+[y2] - минимальное число, которое нужно увеличить до достижения sumPart1. needToAdd = sumPart1 - y1 - y2. Если needToAdd <= 9, ответ [x1][x2][x3][y1][y2][needToAdd]
9. Иначе ответ [x1][x2][x3][y1][needToAdd - 9][9]
Надеюсь, что понятно. Вроде как очень просто описал, рисовать блоксхему лень.