|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.03.2016, 22:08 | #1 |
Регистрация: 20.04.2015
Сообщений: 6
|
Натуральное число называется двояким
Натуральное число называется двояким, если в его десятичной записи встречается не более двух различных цифр. Например, числа 3, 23, 33, 100, 12121 - двоякие, а числа 123 и 9980 - нет.
Для заданного натурального числа N требуется найти ближайшее к нему двоякое число Помогите пожалуйста Последний раз редактировалось Sandakan01; 20.03.2016 в 22:46. |
21.03.2016, 07:04 | #2 |
Форумчанин
Регистрация: 05.07.2010
Сообщений: 136
|
Код:
|
21.03.2016, 08:11 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
igh0st, отлично.
автору темы осталось превратить этот код в функцию (сделать возврат true или false вместо ShowMessage) и добавить вызов данной функции в цикле, пока число не станет двояким (только в цикле нужно делать так Код:
|
21.03.2016, 08:13 | #4 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Можно ж быстрее причём намного
Смотреть на первые два числа а остальные забивать ими смотря больше или меньше само число |
21.03.2016, 10:21 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
согласен! я тоже уверен, что алгоритм с перебором "в лоб" далеко не самый эффективный.
но зато он простой, понятный и надёжный! Все прочие требуют дополнительных танцев и проверок. вот, допустим, есть число 20999 ближайшее к нему 21111 как поможет "Смотреть на первые два числа" ? |
21.03.2016, 10:29 | #6 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Видим 20 - пытаемся докопаться сколько ж надо операций. Для этого забиваем все в виде 20222. Дальше вычитаем (наверное).
Потом увеличиваем второе число. Снова считаем Потом уменьшаем его. И так для всех состояний. Получится 3^2. Фигня ж. Но еще будет интересно что будет при 22999 Тут стоит рассмотреть отделельно. Мол дойти до первой не нашей цифры а дальше изменять только ее. Конец |
21.03.2016, 11:02 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Совсем интересно для 399999 -> 400000. Скорее всего цикл с получением двух чисел путем прибавления и вычитания единицы из исходного и проверкой результата на эту, как её, двоякость
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 21.03.2016 в 11:05. |
21.03.2016, 11:34 | #8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
только нужно чуть изменить порядок исчисления. мой пример остановится на самом числе 399999 (оно уже "двоякое"), а по условиям задачи, если я правильно их понял, нужно найти ближайшее "двоякое" вне зависимости от того, является исходное число "двояким" или нет. Последний раз редактировалось Serge_Bliznykov; 21.03.2016 в 11:37. |
|
21.03.2016, 11:39 | #9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Ага, проглядел. Сомневаюсь, что достаточно просто можно реализовать более оптимальным способом. Или вообще можно.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
21.03.2016, 11:58 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
с одной стороны, чувствую, что задача имеет более эффективное решение, чем банальный перебор с плюсом/минусом. с другой - не вижу этого алгоритма. Поэтому, за неимением лучшего варианта, я бы сейчас остановился на тупом цикле. Возможно, что задача не имеет другого решения, несмотря на кажущуюся простоту. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задано натуральное число N. Найти наименьшее и наибольшее число, состоящее из тех же цифр и в таком же количестве, что и N | dimon_snake | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 17.11.2015 23:38 |
Даны вещественное число a и натуральное число n. Вычислить S | Dimaska931 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 28.11.2012 12:09 |
Даны действительное число a, натуральное число n. Вычис- лить: | Petrovich83 | Помощь студентам | 1 | 09.04.2011 11:30 |
даны действительное число а, натуральное число n [Паскаль] | Анна22 | Помощь студентам | 2 | 07.12.2010 20:31 |
Натуральное число, в записи которого п цифр, называется числом Армстронга, если сумма его цифр, возведенн | OTLi4HO | Общие вопросы C/C++ | 6 | 14.01.2009 19:48 |