|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.03.2016, 20:43 | #1 |
Пользователь
Регистрация: 02.07.2015
Сообщений: 33
|
Составить из числа наименьшее число, которое делится на 3
Дано натуральное число, содержащее до 50 разрядов. Составить из этого числа наименьшее число, которое делится на 3. Если такое число составить невозможно, то выведите NO.
|
10.03.2016, 22:13 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
для любого количества разрядов для десятичных чисел действует правило - если сумма цифр числа делится на 3, то и число делится, и верно обратное, если сумма цифр не делится на 3, то и само число не кратно трём.
Т.е. нужно сперва просуммировать все разряды. Проверить полученную сумму, если она не кратна трём - выход с NO иначе отсортировать массив с числами по возрастанию. Это и будет минимальное число, которое можно составить из исходного. Всё, задача решена. p.s. Написать решение в виде кода надо меньше времени, чем я это своё сообщение сочинял! |
10.03.2016, 22:23 | #3 |
Пользователь
Регистрация: 02.07.2015
Сообщений: 33
|
да, это мне было известно, но у меня не получается написать в виде кода(
|
10.03.2016, 22:27 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
10.03.2016, 22:46 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Здесь формирование наименьшего. Ввод/вывод и проверку делимости на 3 сам делай
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 11.03.2016 в 08:48. |
11.03.2016, 04:40 | #6 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Код:
Для получения всех перестановок 50-и разрядов, компу не хватит ни времени ни ресурсов .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
11.03.2016, 07:28 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А зачем их получать?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
11.03.2016, 08:23 | #8 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Условие читай (составить наименьшее). Я так понял, составить из цифр, входящих в это число, наименьшее, делящееся на 3.
Если бы вопрос был задан - определить, какая цифра делится на 3? Если таковой нет, найти наименьшую сумму делящуюся на три, тогда полный перебор перестановок был бы не нужен. Ежу понятно, что нужно найти сумму двух - трёх чисел т.к. сумма четырёх, всегда будет больше чем трёх. Нули, естественно не в чёт. Наименьшая сумма, делящаяся на 3 = 1+2 или 1+1+1. Перебор нескольких вариантов показывает, что наименьшее суммируемое к-во цифр не превышает трёх. 0000 = No 1111 = 1+1+1= 3 2222 = 2+2+2 = 6 3333 = 3 4444 = 4+4+4 = 12 5555 = 5+5+5 = 15 6666 = 6 7777 = 7+7+7 = 21 8888 = 8+8+8 = 24 9999 = 9 Ну и могут быть комбинации из разных цифр. Возьмём другой пример: 1875 сумма = 21 - не делится но минимальное число, составленное из этих цифр = 15 - делится. 1-а стоит в старшем разряде, а 5-а в младшем. Как компу "объяснить", что нужно считать наименьшую сумму? Только перестановками. После N перестановок число примет вид 7815. Сумма двух последних и будет искомое наименьшее. Если бы в задании было - определить, делится ли число на 3, тут и вопросов-бы небыло. Подсчитываем сумму всех цифр и делим на 3. Если в остатке 0 - делится, не ноль - не делится.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 11.03.2016 в 09:01. |
11.03.2016, 08:46 | #9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Ну вот число 710052, оно делится на 3.
Наименьшее число из этих цифр 100257 без всяких перестановок и оно тоже делится на 3
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
11.03.2016, 09:10 | #10 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
У тебя тоже числа переставлены. Как его получить без перестановок? И у тебя оно не наименьшее. Наименьшим будет 001257. Добиваемся простой сортировкой по возрастанию.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 11.03.2016 в 09:16. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Какое наименьшее число Z можно получить вставкой цифры X в четырёхзначное число Y. | Drunk Gnome | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 15.11.2014 20:57 |
Функция, которая генерирует число в диапазоне от 0 до числа, которое передается ей в качестве параметра | harvey | Помощь студентам | 1 | 28.03.2013 21:58 |
Даны натуральные K и L. Определить, делится ли K нацело на L. Если делится, то заменить эти числа их квадратами, в противном случ | Proskurina | Помощь студентам | 1 | 27.03.2013 21:39 |
два натуральных числа. Верно ли, что их наименьшее общее кратное есть нечетное число | monokol | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 21.12.2011 15:53 |
Ввести число N и определить делится ли оно без остатка на число M (VBA) | Ivanich | Microsoft Office Excel | 7 | 24.04.2008 19:43 |