Где кончается арифметика?

Хорошая задача принесет примату тем больше пользы, чем больше он над ней будет думать.

Хорошая задача принесет примату тем больше пользы, чем больше он над ней будет думать.

Задача Найдите границы допустимых значений для какого-либо из целочисленных типов данных

Конечно задание не сформулировано строго. Можно сказать, что вообще не сформулировано. Но именно так и выглядит большинство задач, которые будут возникать перед прикладниками. Так или иначе они возникли из потребностей практики, а практику формализовать отдельная задача.
Т.е. для того, чтобы понаблюдать за Вашими рассуждениями этой постановки вполне достаточно.
Давайте начнём рассуждать. Сразу бросается в глаза(?!), что требуется найти, а не узнать. Т.е. требуется организовать какой-то процесс поиска границ. Не сразу, но возникает вопрос — а что искать? Если предположить (условие задачи это подсказывает), что есть единственный допустимый диапазон, а за его пределами целых чисел нет, то станет ясно что искать — две границы за которыми кончается математика. Точнее арифметика. А как это проверить?
Можно взять какое либо число и прибавить к нему… ну, например, единицу. Если полученная сумма не окажется больше исходного числа, то математика точно кончилась. Точнее — арифметика.

А если окажется больше, то всё в порядке? Вообще говоря, неизвестно.

Хорошая задача принесет примату тем больше пользы, чем больше он над ней будет думать. Мог бы сказать Дьёрдь Пойа

Недостаточно лишь понять задачу, необходимо желание решить её. Без сильного желания решить трудную задачу невозможно, но при наличии такового возможно. Где есть желание, найдётся путь! Дьёрдь Пойа

И вот, если Вы дочитали до этого места, то самое время отправиться читать КНИГУ о математике и правдоподобных рассуждениях. Эту книгу написал в Стэнфордском университете Дьёрдь Пойа задолго до моего рождения. Но если Вы читаете книги, она Вам обязательно понравится. Я прописываю Вам эту книгу не как лекарство, а как витамины. Читайте её, когда есть время для спокойного отдыха.

Что касается задачи, то пожалуйста попытайтесь найти метод её решения без излишней узости постановки. Конечно, мы уже знаем про «глобус целых чисел» и дополнительный код, но давайте не будем считать, что система счисления обязательно двоичная и разрядность заранее известна. Так не интересно.

Свои решения, пожалуйста, вставляйте в виде комментариев к данной статье.

P.S. Решения мы пока пишем на IDEone. Эта система будет выполнять Вашу программу не дольше некоторого заданного времени. Т.е. перебирать все целые числа точно не получится.

Мазурок Игорь Евгеньевич

Мазурок Игорь Евгеньевич

Разработчик программного и информационного обеспечения.
Доцент Одесского национального университета имени И.И.Мечникова
Учёный в области защиты и противодейтствия в интеллектуальных информационных системах
Мазурок Игорь Евгеньевич

Latest posts by Мазурок Игорь Евгеньевич (see all)

3 thoughts on “Где кончается арифметика?

  1. http://ideone.com/wOnVOK

    Программа работает, в вывод нужно поместить название типа и программа выведет максимальное число которое может в него поместиться. (Я все исправил, теперь даже на ideone работает)

  2. Правда, long double подкачал — он не укладывается в 15 секунд, но на Dev-C++ все нормально скомпилировалось и программа дает правильный ответ и для long double тоже

Добавить комментарий