как из кучки заданных цифр образовать число делящееся на 3?

алгоритм програмирование делимость

подскажите как из кучки заданных цифр образовать максимально возможное из этих цифр число делящееся на 3?
нужен алгоритм не очень долгий, для проги...
Ответы:
Сумма их (цифр) должна делится на 3, тогда и число ими образуемое тоже будет делится на 3.
а кучка большая))?
Во-первых, можно конечно просто перебором: берешь одну цифру, дописываешь еще одну и еще одну и проверяешь.
Чтобы побыстрей возможно так (может быть это даже жадный алгоритм, но не уверен): упорядочить все цифры по возрастанию. Берем наибольшую цифру, и опять ее же и снова ее (если нет ограничений на повтор цифр в числе) - если делится, стоп, нашли это число. Если не делится берем в разряд единиц записываем меньшее число, проверяем. Если опять не делится на пробуем еще меньшее число, и так пока не проверим все цифры когда в старших разрядах стоит наибольшее число. Если не нашли, то на старшее место записываем вторую по величине цифру и т.д. пока не найдем число, которое делится на три, или увидем, что его нет.
Выстраиваем все циферки по убыванию.
Считаем сумму цифр. Если делится на 3, то все хорошо.
Если получается остаток 1(2), то начинаем просматривать все циферки с конца и ищем первую, которая даст остаток 1(2) при делении на 3. По пути запоминаем первые две встретившиеся цифры, которые дают остаток 2(1).
Когда находим нужную цифру - выкидываем ее и все становится хорошо.
Если не нашли такой цифры - выкидываем две цифры с другими остатками и опять все становится хорошо.
Если не набралось двух цифр с другими остатками, то число кратное трем составить нельзя.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.