|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.07.2012, 10:23 | #1 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Наименьшая с.с.
И так господа программисты, поскольку поток студентов\школьников-хомячков закончился, а душа жаждет программирования, то вопрос : как бы Вы решили данную задачу (с точки хрения красоты и эффективности)? http://acmp.ru/index.asp?main=task&id_task=315 (опять же сорри за не очень красивую ссылку, т.к. пишу с "работы")
Для нелюбителей ссылок: Известно, что основанием позиционной системы счисления называют количество различных символов, используемых для записи чисел в данной системе счисления. Также известно, что любое число x в b-ичной системе счисления имеет вид x=a0∙b0+a1∙b1+…+an∙bn, где b ≥ 2 и 0 ≤ ai < b. Для записи чисел в b-ичной системе счисления, где b ≤ 36, могут быть использованы первые b символов из следующего списка 0,1,…, 9, A, B, …, Z. Например, для записи чисел в троичной системы используются символы 0, 1, 2, а в двенадцатеричной - 0,1,…, 9, A, B. Требуется написать программу, которая по входной строке S определит, является ли данная строка записью числа в системе счисления, с основанием не большим 36, и, если является, определит минимальное основание этой системы счисления. Данную задачу я решил вот так : Код:
Последний раз редактировалось Poma][a; 12.07.2012 в 10:35. |
12.07.2012, 12:26 | #2 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Я бы чуть упростил
Код:
Последний раз редактировалось eoln; 12.07.2012 в 12:30. Причина: ошибка |
12.07.2012, 13:27 | #3 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Я бы не решился назвать замену алгоритма O(N) на O(N^2) упрощением.
|
12.07.2012, 14:50 | #4 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
s-andriano, Вы наверное к максимальной оптимизации стремитесь? В магазин не со своими атомными весами ходите?
Упростить, значит сделать жизнь проще, а не быстрее. Код компактный, быстродействие (учитывая макс. длину строки 255 символов) хорошее. P.S. Не собираюсь спорить по вопросы оптимизации, в данном случае она не критична. |
12.07.2012, 17:04 | #5 | ||
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Цитата:
Цитата:
Но за хороший комент, s-andriano Вам не менее огромное спасибо! |
||
12.07.2012, 19:04 | #6 | ||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Если Вы предлагаете решение, которое лучше по всем параметрам - нет вопросов. Но если Ваше решение кроме плюсов имеет и явные минусы - это нужно, минимум оговаривать. Я не утверждаю, что менее оптимальные решения не стоит приводить, я лишь предостерегаю от однозначных характеристик (типа "проще") в явно неоднозначных случаях. Цитата:
Впрочем, и обратного я не утверждаю: вполне вероятно, ТС Ваше решение подойдет больше. Но о том, что ему критично, а что - нет, решать ему. |
||
12.07.2012, 20:40 | #7 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
|
12.07.2012, 20:44 | #8 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
|
12.07.2012, 20:49 | #9 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Код:
|
12.07.2012, 21:02 | #10 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Для сравнения эффективности алгоритмов решил выложить время по тестам :
Poma][a : Код:
eoln Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
даны три квадратные матрицы третьего порядка.вывести на экран ту из них,норма которой наименьшая. в качестве нормы матрицы взять м | ayoka | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 16.05.2012 18:28 |
Массив (наименьшая сумма) | Dmitriy_B | C++ Builder | 4 | 18.02.2012 01:25 |
наименьшая цифра числа в delphi | SALOmandra | Помощь студентам | 2 | 22.04.2008 15:57 |