Alex U
Честно говоря, удивлён. Думал, уже всё решили давно 😂: ведь в Челябинске есть хорошие традиции спортивного программирования, а команда ЮУрГУ даже как-то ездила на финал чемпионата мира.
Само задание увидел поздно и решил порешать в качестве разминки мозга, ни на что не рассчитывая. После попытки решения "в лоб" (целочисленное деление с попыткой разброса остатка деления на более мелкие монетки) быстро понял, что такое решение не пройдет. В это время как раз организаторы здесь на канале поясняли, что всё не так просто.
Начал разбираться с решением. Мозг скрипел и пыхтел - ведь было поздно и динамическое программирование - не то, что очень типичная задача для ДевОпс 😂. Понял, что задача - это частный случай "рюкзака" с неограниченным набором элементов и требованием выбрать более крупные до точного совпадения с суммой. (Кстати, потом увидел, что и на канале обсуждают его) В статье на Википедии нашёл алгоритм с решением на Питоне. Однако он только считал общее минимальное количество монет, не их номинал. Поэтому пришлось расширить решение, включив еще один массив с наборами монет. После нахождения решения осталось только посчитать их количество в разных номиналах и отсортировать по возрастанию.
Ага, мне тоже понравилось решать, сначала вроде показалось проще простого, нагуглил решение диофантовых уравнений, это когда переменных меньше чем количество уравнений, там через общие делители, но оказалось что мне нужно не одно решение а все, поэтому пришлось решать в лоб и потом оптимизировать. Ну и с 4 раза получилось)