@sazer

Как из неизвестного числа находящегося в диапазоне вычесть, что бы получить минимальный неотрицательный остаток?

Есть очень большое число находящееся в диапазоне от 2**120 до 2**119.

Нужно выяесть из числа максимально много, но чтобы не "уйти" в отрицательный диапазон чисел. Как это сделать наиболее правильно ?

Когда я пытаюсь последовательно вычитать все меньшие чичла - 2**118,2**117,2**116 то при вычете 2**116 ухожу в отрицательный диапазон.

спастбо
  • Вопрос задан
  • 198 просмотров
Решения вопроса 2
@rPman
Задача не ясна, что значит вычитать максимально много
наиболее точное значение будет - само число

если чтобы узнать число ты можешь только проводить эксперимент (т.е. у тебя черный ящик на вход которого подаешь число которое вычистается ящиком и он отвечает - ой нешмагло, сильно много вычло, то у тебя log от максимального значения числа попыток делением

текущее число равно максимальное
в цикле закидываешь его в черный ящик,
- если смогло - уменьшаешь число на половину от значения между текущим и минимальным
- если не смогло (число больше желаемого) то увеличиваешь число на половину значения между текущим и максимальным
продолжать до тех пор пока разница между текущим значением и предыдущим не станет 1 (или точнее допустимой погрешности)
Ответ написан
Комментировать
Минимальный неотрицательный остаток можно получить, если вычесть число само из себя.
Если число у вас "есть", то оно уже не неизвестное.
Ваш КО.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы