|
0 / 0 / 0
Регистрация: 13.01.2010
Сообщений: 6
|
|
Подсчитать количество всех четырехзначных чисел, в записи которых нет одинаковых цифр13.01.2010, 21:05. Показов 12372. Ответов 36
Метки нет (Все метки)
подсчитать количество всех четырехзначных чисел, в записи которых нет одинаковых цифр.Вывести на экран все числа начинающиеся на 98 и удовлетворяющие вышеукзанным условиям.
0
|
|
| 13.01.2010, 21:05 | |
|
Ответы с готовыми решениями:
36
Получить все четырехзначные натуральные числа, в записи которых нет двух одинаковых цифр Получить все четырехзначные натуральные числа, в записи которых нет двух одинаковых цифр |
|
0 / 0 / 0
Регистрация: 13.01.2010
Сообщений: 6
|
|
| 14.01.2010, 00:21 [ТС] | |
|
to Alligieri:
И последние а можно написать,что каждая строка обозначает...а так огромное спасибо,теперь допущен к экзамену)))
0
|
|
|
15 / 15 / 2
Регистрация: 12.01.2010
Сообщений: 51
|
|||||||
| 14.01.2010, 00:22 | |||||||
|
Вот сделайте последний замер времени работы вот этого кода:
0
|
|||||||
|
7 / 7 / 1
Регистрация: 13.01.2010
Сообщений: 82
|
||||||
| 14.01.2010, 00:23 | ||||||
|
Зачем эта часть нужна
0
|
||||||
|
CEO
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
|
|
| 14.01.2010, 00:28 | |
|
Не по теме: faton99, бывает:) Добавлено через 1 минуту faton99, проверяет равность цифр (конвертирует два значения типа char в значения типа int и сравнивает их) Добавлено через 1 минуту Не по теме: мне вот только интересно почему она начала работать быстрее аналога с сравнением charов
0
|
|
|
7 / 7 / 1
Регистрация: 13.01.2010
Сообщений: 82
|
|
| 14.01.2010, 00:28 | |
, я догадуюсь, что чегото не допанимаю, и всё же зачем их конвертировать и снова сравнивать, если они и так int-овские?
0
|
|
|
CEO
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
|
|
| 14.01.2010, 00:29 | |
|
faton99, я просто эксперементировал
и получилось быстрее.
1
|
|
|
7 / 7 / 1
Регистрация: 13.01.2010
Сообщений: 82
|
|
| 14.01.2010, 00:37 | |
|
я тепрь не пойму, откуда у меня char взялся?(я начинающий, мыслю прямолинейно
)Добавлено через 2 минуты Кому интересно, взгляните мою тему "как мне для кнопок создать обработчик", я там тоже прямолинейно мудрю ![]() Добавлено через 34 секунды Зарание всем спасибо!
0
|
|
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
||||||
| 14.01.2010, 01:30 | ||||||
|
Ksen15,
подсчитать количество всех четырехзначных чисел, в записи которых нет одинаковых цифр
0
|
||||||
|
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
|
||||||
| 14.01.2010, 01:31 | ||||||
|
2 мс
0
|
||||||
|
CEO
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
|
|
| 14.01.2010, 02:33 | |
|
HIMen,
![]() ![]() Ток вы вывода не сделали - на это основное время идет
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 5
|
||
| 14.01.2010, 06:55 | ||
|
В нашем случае n=10 (цифры от 0 до 9) и m=4 - все четырехзначные наборы цифр, включая и те, что начинаются с 0. Для исключения этих выборок(т.к. они не являются четырехзначными числами) рассмотрим выборки по три цифры из набора от 1 до 9 (0 не участвует, т.к. он уже есть в начале комбинации из 4-х цифр). Таким образом получаем формулу: X=A(10,4)-A(9,3)=10*9*8*7-9*8*7=9*9*8*7=4536(если не наврал), т.е. для решения первой части нужен не компьютер, а калькулятор. Вторая же часть решается перебором всего 98 вариантов (цикл от 01 до 98), т.к. первые две цифры - фиксированы. И немного уточнений - исходя из условий задачи, во всех ваших вариантах нужно циклы брать не до 9999, а до 9876 (это наибольшее число, удовлетворяющее условию). Добавлено через 30 минут Да, к уточнению забыл про нижнюю границу цикла написать - это число 1023, так что общее сокращение количества итераций с 8999 до 8854 (на 145 меньше), конечно, если не считать написанного выше, где требуется всего 98 итераций. Но, ежели суть в том, чтобы показать преподавателю мастерство программирования - то можно и заморачиваться как у Rififi (не обижайтесь, просто для конкретной задачи лучшее решение - простейшее, если же решать в общем виде - возможно и такое) Добавлено через 43 минуты Нюансы, нюансы и еще раз нюансы: сам забываю иногда про конкретные условия - ведь цифры 8 и 9 во второй части задачи уже заняты, поэтому из цикла они исключаются и остается совсем ничего - цикл по десяткам от 0 до 7 и внутренний по едницам от 0 до 7 - итого - 64 итерации. Программу не пишу - это уже дело вкуса. Вместо конвертирования из char в int предлагаю использовать массив символьных представлений цифр и работать или с индексами или с самими элементами, т.е. сравнивать не элементы массивов а их индексы, а выводить - элементы, ну или что-то в этом роде.
0
|
||
|
0 / 0 / 0
Регистрация: 13.01.2010
Сообщений: 6
|
||||||
| 14.01.2010, 10:26 [ТС] | ||||||
|
Что значит InText и IsDuplex в этом коде?
0
|
||||||
|
7 / 7 / 1
Регистрация: 13.01.2010
Сообщений: 82
|
||||||||||||
| 14.01.2010, 14:10 | ||||||||||||
|
InText.Length-длина строко, она в данном случае равна 4. тоесть
Теперь разбирайся как они используются.
0
|
||||||||||||
|
CEO
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
|
|
| 14.01.2010, 17:31 | |
|
ru****, программирование-программированием и оптимизация с комбинаторикой другой оптимизации рознь
предпочитаю универсалные алгоритмы - те которые можно приспособить потом и для 5ти значных и n-значных чисел.
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 5
|
||
| 15.01.2010, 06:47 | ||
|
Я программист-практик и знаю, что все универсальные алгоритмы - избыточны и часто тяжелы. Поэтому я, в основном, предпочитаю решать конкретные задачи как можно проще и быстрее. Думаю и Вы согласитесь, что решать квадратные уравнения проще и быстрее по школьной формуле, чем, скажем, численными методами(прямоугольников, трапеций, Ньютона и т.д.), хотя, последние пригодны для решения любых линейных уравнений. В самом условии данной задачи универсальной является только часть, касающаяся вывода вариантов чисел с неодинаковыми цифрами(да и то, ограниченная наличием двух заданных - 98). Подсчет количества таких чисел идет по универсальной формуле из комбинаторики. А вот вывода - я в своем посте почти и не касался. Теперь мысли как раз насчет этого. ИМХО, нужно не парсить четырехзначные числа на цифры, а набирать их из неодинаковых цифр. Т.е. - четыре вложенных цикла от 0 до 9 (кроме первого - он от 1), во внутреннем цикле идет сравнение всех четырех индексов и при неравенстве - составляется строка из их символьных представлений. Это самый простой, по-моему, из неоптимизированных методов. Для универсальности этого алгоритма можно цикл оформить в виде процедуры и обращаться к нему рекурсивно. Для оптимизации же, наверно можно обратиться не к декрементным циклам, а к циклам по списку значений, т.е. переменная внешнего цикла идет по списку 1,2,...9, следующего - по списку 0,1,...9 - с исключенным значением переменной первого цикла, следущего - по тому же списку, но с исключением уже двух значений и т.д. То есть список для каждого следущего цикла составляется в предыдущем, путем исключения из своего текущего значения переменной цикла. Писать самому программу мне немного лень, т.к. не очень представляю ее практическое применение, кроме как тренировки ума. Может, если только есть кодовые замки с таким специфичным условием набора, то оптимизировать время их взлома - уже интереснее. Кстати насчет универсальности - ответ на вопрос: "мне вот только интересно почему она начала работать быстрее аналога с сравнением charов" - мне кажется именно в избыточности универсальных методов. Известно, что сравнение целых чисел идет быстрее, чем сравнение символьных строк, но вызывает большое сомнение ускорение за счет конвертирования. Поэтому, имхо, суть может быть в том, что сравнение всех данных идет всегда в одном формате (скорее всего каком-то битовом). Т.е. перед сравнением любые данные ВСЕГДА приводятся к этому единому формату. Если в программе ЯВНО не указано конвертирование к более быстрому для сравнения типу, то транслятор сам выполняет это конвертирование, но универсальными методами, где, возможно, идет сначала анализ сравниваемых типов, а затем преобразование. Таким образом, прямое указание ограничивает универсальность и выигрывает время.
0
|
||
|
CEO
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
|
|
| 15.01.2010, 14:32 | |
|
ru****, вот насчет последнего замечания - тут если честно странность, потому что и int и char не являются ссылочными типами потому сравниваются их абсолютные значения а не ссылки - тоесть в методике сравнения разницы не должно быть. Кроме того вызов конвертации ИМХО должен еще больше тормозить программу, а оказалось совсем наоборот.
Добавлено через 2 минуты ru****, и еще одно - вы думаете что четыре вложенных цыкла будут работать рациональнее?) Я некогда изучал оптимизацию алгоритмов (правда на ASMe и С++, но думаю подходы те же), так вот там всегда рекомендовалось уменьшать количество вложенных циклов даже за счет увеличения максимума проходов по внешним.
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 5
|
|
| 18.01.2010, 02:46 | |
|
Про четыре вложенных цикла - я сам написал, что "Это самый простой, по-моему, из неоптимизированных методов." Вложенные циклы это универсальность, а не оптимизация, т.к. их количеством определяется значность заданного в условии задачи числа. Оптимизация же достигается тем, что внутренние циклы укорачиваются за счет отброса значений переменных из внешних. То есть: самый внутренний цикл идет по списку всего из 7-ми значений. Таким образом, общее количество итераций для исходных условий составит 9*9*8*7=4536 (вместо 8987), то есть столько, сколько есть четырехзначных чисел с неповторяющимися цифрами. В каждом цикле выводится число. Идет не отсев, а синтез таких чисел.
Насчет же ускорения сравнения при конвертации еще раз повторю, что я вижу пока одно логичное объяснение этому - конвертация происходит в обоих случаях: и когда есть метод Convert и когда его нет. Причем, неявное конвертирование проходит медленнее, чем явное. Раньше было понятие (и ПО) - оптимизирующий транслятор. Теперь, по-моему, все трансляторы оптимизирующие, т.е. они сами могут некоторые вещи додумывать за программиста. Но даже сам процесс оптимизации невозможен без универсализации, а любая универсальность не может быть до конца оптимизирована. Вот и балансируем между универсальностью и оптимальностью. Явное указание метода конвертирования дает более оптимальный по времени результат, чем его неявное выполнение. Но это имхо, точно же понять суть данного эффекта можно, например, дизассемблировав оба вариантаи проанализировав коды. Alligieri, тема этого конкретного топика, пожалуй уже закрыта, а я еще не разбирался как писать в личку, так что наши обсуждения могут посчитать флудом. Если не затруднит - напишите мне в личку - как ею пользоваться(читать из нее я могу, а как писать - не знаю)
0
|
|
| 18.01.2010, 02:46 | |
|
Помогаю со студенческими работами здесь
37
Нахождение всех четырехзначных натуральных чисел, в записи которых нет одинаковых цифр». Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|