Мне не нужен конкретный пример, т.е. код. Теоретически, если нужно работать с числами которые превышают допустимые представления для типа int. И условие можно использовать только int тип. Как бы вы это решили?
.
Под работой с такими числами я понимаю их вывод на экран, и орифметические операции с ними. На у м приходит например если не хватает одной переменно Int то использовать две переменные(как бы больше значений можно представить но как с ними работать)
Другие языки программирования и технологии
Есть задача о представлении чисел. Как бы вы её решили?
Практически в каждом мейнстримном языке есть целочисленный тип повышенной точности с оптимизированными операциями для него.
Я даже сам когда-то делал такой тип. У меня была крутая реализация на шаблонах C++, со статически известным размером, без ветвлений. Впрочем, это было её единственным достоинством. Факториал от 2000 она считала секунды полторы (для сравнения, Питоновский math вычисляет его за доли секунды на таком же железе). В нём 5736 десятичных цифр или 19053 бита.
И вторая большая проблема - переводить числа в десятичную форму для вывода на экран, в файлы, в БД и т.п. В лоб делать, как школьники (в цикле поделить на 10, взять остаток) - очень затратно, деление же медленное, а тут ещё каждый раз приходится делить всё число, операцию никак не декомпозируешь. Тот же самый факториал 2000 переводился в строку где-то полминуты. В несколько раз удалось ускорить таким трюком: делим число на 10 в 18-й степени (максимальная степень 10, влезающая в 64 бита), получаем 18-значные числа, которые обрабатываем уже обычными делениями, каждое из которых - одна процессорная операция divmod на регистрах. Но всё равно, до скорости Питоновской реализации осталось, как до Луны пешком.
В общем, в самопальных реализациях смысла нет, арифметика повышенной точности - это серьёзная задача.
- для C/C++ есть библиотека GNU MPZ;
- в Питоне инт и так безразмерный (но и весит 24 байта + 4-байтные инкременты);
- в Java есть BigInteger, даже с кое-какими оптимизациями, по крайней мере, Карацуба и Тум-Кук в нём точно реализованы.
Я даже сам когда-то делал такой тип. У меня была крутая реализация на шаблонах C++, со статически известным размером, без ветвлений. Впрочем, это было её единственным достоинством. Факториал от 2000 она считала секунды полторы (для сравнения, Питоновский math вычисляет его за доли секунды на таком же железе). В нём 5736 десятичных цифр или 19053 бита.
И вторая большая проблема - переводить числа в десятичную форму для вывода на экран, в файлы, в БД и т.п. В лоб делать, как школьники (в цикле поделить на 10, взять остаток) - очень затратно, деление же медленное, а тут ещё каждый раз приходится делить всё число, операцию никак не декомпозируешь. Тот же самый факториал 2000 переводился в строку где-то полминуты. В несколько раз удалось ускорить таким трюком: делим число на 10 в 18-й степени (максимальная степень 10, влезающая в 64 бита), получаем 18-значные числа, которые обрабатываем уже обычными делениями, каждое из которых - одна процессорная операция divmod на регистрах. Но всё равно, до скорости Питоновской реализации осталось, как до Луны пешком.
В общем, в самопальных реализациях смысла нет, арифметика повышенной точности - это серьёзная задача.
Скорее всего я б эту задачу никак не решал
Ну сделай так - пусть число будет представлено как массив int. Каждый int это цифра числа (в 2^31-1 ричной системе). Соответственно сразу очевидно как складывать, умножать и вычитать. Про деление нужно будет отдельно погуглить (тебе).
О чем речь? О выводе на экран сверхбольших чисел? Они обычно выводятся на экран в экспоненциальной записи. Например триллион компьютер вряд ли выдаст как 1000000000000. Он вместо этого напечатает лаконичное 1e+12
Похожие вопросы
- как решить через abc pascal задачу "Дано натуральное число n. Получить все простые делители этого числа"
- При помощи компьютера эту задачу до какого числа можно решить?
- задача "найти пары чисел"
- составить программу решения задачи дано 10 чисел определить сколько из них принимает наибольшее значение.как решить?*(((
- Решите задачу! Дано целое число n найдите сумму 1^n +2^n-1 + 3^n-2 ...+n^1
- помогите решить задачу!...Даны целые числа a, b, c, являющиеся сторонами некоторого треугольника.Проверить истинность вы
- Программисты, объясните, пожалуйста, как компьютер выполняет задачу случайного выбора числа из ряда чисел?
- Помогите получить двоичную форму внутреннего представления числа 16,8125 (в 4- х байтовой ячейке)
- нужна полная прога на си для задачи. найти натуральное число от1 до 10000 с максимальной суммой делителеи.
- задача pascal. представить число в виде всех возможных сумм.