Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 23.10.2007, 08:29   #11
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Люди, давайте мы научимя читать...
Цитата:
Сообщение от urgu_st Посмотреть сообщение
Дано натуральное число N, нужно заменить одну из его цифр, только одну, чтобы получилось число, максимально близкое к некоторой степени двойки. Без массивов, строк и функций.
Число N может быть любым. Заменить следует одну из цифр, его составляющих.
Цитата:
Сообщение от puporev Посмотреть сообщение
Например для числа 24 есть два решения: 14 и 34, для числа 999 нет решений и т.д.
Решение есть всегда(!).
Чисо 24:
Вспоминаем степени двойки: 1, 2, 4, 8, 16, 32, 64... 128, 1, 2, 3 и 8 не имееют смысла в данном случае...
берем числа по порядку:
24 и 16 -> меняем 2 на 1 -> 14 и 16 = разница - 2
24 и 32 -> меняем 2 на 3 -> 34 и 32 = разница - 2
24 и 64 -> меняем 2 на 6 -> 64 и 64 = разница - 0
Эврика! Получили ответ: при смене 2 на 6 в числе 24 мы получаем чистую шестую степень двойки.

Число 999:
Степени (нужные нам): 128(7), 256(8), 512(9).
999 и 128 -> меняем 9 на 1 -> 199 и 128 = разница - 71
999 и 256 -> меняем 9 на 2 -> 299 и 256 = разница - 43
999 и 512 -> меняем 9 на 4 -> 499 и 512 = разница - 13
При смене первой девятки на четверку в числе 999 мы получаем максимально близкое число 499 к девятой степени двойки.
Здесь же стоит рассмотреть один ньюанс: Почему в последнем случае я взял не 5, а 4? И 5 я тоже взял, но опустил, хотя проверка этого варианта программой должна бесспорно осуществляться.
Итак, в варианте с числом 24 так же должна быть еще одна строка:
24 и 16 -> меняем 2 на 3 -> 34 и 16 = разница - 6
Почему? Да потому что в первом числе вторая по разрядности цифра находится в первой половине десятка, а во втором - во второй половине. Отсюда вытекает, что мы должны это проверять...
999 и 512 -> меняем 9 на 5 -> 599 и 512 = разница - 87
Здесь та же ситуация, только обратнопропорциональна предыдущей.
Надеюсь, все поняли.

P.s. По этому уже можно писать программу.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума
Старый 23.10.2007, 08:47   #12
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

> Надеюсь, все поняли.
молодец !

че делать с остальными постами в теме - лишние теперь )
Берегите друг друга!
Virtson вне форума
Старый 23.10.2007, 08:56   #13
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение

0. M = число цифр в числе N
1. получаем набор чисел D степеней двойки, в каждом М цифр
2. смотрим расстояние R до ближайшего D = min {abs(R - Di)}
3. если R<10 , то пробуем менять последнюю цифру - единицы, [пример 19]
иначе если R<100 , то подбираем десятки, [пример 24, 138]
иначе если R<1000, то подбираем разряд тысяч [пример 999]
и т.д.
Берегите друг друга!

Последний раз редактировалось Virtson; 23.10.2007 в 12:56.
Virtson вне форума
Старый 23.10.2007, 09:14   #14
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

По этим трем постам можно без особых проблем написать данную программу различными методами:
http://programmersforum.ru/showpost....32&postcount=2
http://programmersforum.ru/showpost....9&postcount=11
http://programmersforum.ru/showpost....7&postcount=13

Тема закрыта.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Label записать число в степени? XilDen Общие вопросы Delphi 7 03.07.2009 21:03
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
Число в степени vItal87ka Паскаль, Turbo Pascal, PascalABC.NET 12 12.01.2008 08:21
Какие знаения нужно сложить, чтобы получилось определенное число Natalia K. Microsoft Office Excel 4 23.11.2007 13:22
как вывести число с ограниченным количеством цифр после запятой? delphi Ensoph Помощь студентам 1 02.10.2007 07:50