![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
идея следующая: если удастся простым способом получить "перевернутое" число, его можно просто сравнить с исходным.
такой алгоритм потребует вычисления остатка от деления на 10 для всех цифр исходного числа и формирования из остатков перевернутого числа, умножаемого на 10. т.е. получается довольно простой цикл. пока я это писал Skevalt привел почти тот самый алгоритм. если "отсечь лишнее", получится попроще (и побыстрее).
|
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
может позицию хранить не как индекс, а как степень десяти ? т.е. итерацию проводить не как ++/--, а как *=10 / /=10 Добавлено через 3 минуты и 40 секунд
у этого алгоритма есть недостаток возможно переполнение и как следствие не правильный результат.. Добавлено через 4 минуты и 37 секунд
а чем не устраивает хранение промежуточного числа как строки ? |
||||
|
|||||
mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
не устраивает ТС'а т.к. по условию массивы нельзя использовать. у перевернутого числа действительно возможно переполнение, но вообще он красивый и мне нравится ![]() промышленная реализация, возможно, должна была бы анализировать число и выбирать оптимальный алгоритм.
не вижу смысла. операция должна проводиться не над текущей цифрой, а над предыдущей или следующей. так что можем выиграть лишь одно умножение на 10, стоит ли ради этого жертвовать ясностью? хотя там есть небольшие возможности оптимизации, например можно более оптимально подсчитывать число цифр, вычисляя логарифм эффективным методом. |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну на примере unsigned char : 126 -> [621] -> 109 та же проблема, но на других значениях есть и других целочисленных типов.. ![]() Добавлено через 2 минуты и 52 секунды это смотря как подходить к вопросу.. мне кажется можноэтим подходом как раз повысить ясность..сейчас попробую.. |
|||
|
||||
mimik |
|
|||
![]() не Rohoss Я ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 1.11.2010 Репутация: нет Всего: 2 |
||||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
отвлекся.. вот выбрал минутку и сделал набросок :
|
||||
|
|||||
Dov |
|
||||||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
Да чего уж там? Запрещать, так запрещать. Тогда уж и без if/while обойдёмся... ![]()
Ты бы, для начала, с полом определил(ась/ся) бы... ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
||||||
|
|||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
тогда уж и без рекурсии ![]() а вообще для 5ти-значного числа из задания, все гораздо проще :
Добавлено через 2 минуты и 16 секунд или, как было приведено выше : |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
mes, все верно. вчера спешил и не сразу сообразил)))
точнее, сам себя запутал) Это сообщение отредактировал(а) baldina - 28.12.2010, 10:32 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
чтоб не было переполнения можно ведь переворачивать только половину числа..
Добавлено @ 11:19 вот еще один вариант получения длины числа (32х битного):
этот "switch" можно метагенерить, но мне сейчас лень об этом думать Это сообщение отредактировал(а) mes - 28.12.2010, 11:26 |
||||
|
|||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
![]() переворачивая половину числа можно не вычислять число цифр
|
||||
|
|||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
Чего там? У меня не открывается ссылка. Здесь выложи... -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |