Бороздя просторы интернета, заметил, что многие ничего не знают о реализации длинной арифметики.
На самом деле все делается довольно просто.
Для решения задач пободного типа используется длинная арифметика.
Например, дано число 10^20, нужно прибавить 10^30. Понятно, что обычными паскалевскими процедурами тут ничего не сделаешь. Тут нам поможет длинная арифметика.
Как ее реализовать? Мы будем представлять числа в виде массива.
В 0 элементе массива будет хранится длина числа.
В каждом элемента хранится одинаковое количество цифр, например по 3(назовем это число константой baselen).
Предположим, дано число 123456789. Количество цифр в каждом элементе 3.
Для удобства при разных операциях с числами мы будем записывать их задом наперед.
То есть наш массив: [789][456][123]. Это число 123456789 в представлении компьютера.
Не забываем про нулевой элемент, в котором хранится длина. В данном случае 3.
Числа записываются именно таким образом, потому что существует много нюансов, описывать которые очень долго.
Вот и все описание данного типа.
Потихоньку буду выкладывать процедуры, выполняемые с такими числами.
Причем на том форуме никто так и не помог решить данную задачу.:
Прошу помочь найти способ возвести в степень 2^n, причём n>10^20. Много чего перепробовал, но найти какой-то рациональний способ так и не смог.
На самом деле все делается довольно просто.
Для решения задач пободного типа используется длинная арифметика.
Например, дано число 10^20, нужно прибавить 10^30. Понятно, что обычными паскалевскими процедурами тут ничего не сделаешь. Тут нам поможет длинная арифметика.
Как ее реализовать? Мы будем представлять числа в виде массива.
В 0 элементе массива будет хранится длина числа.
В каждом элемента хранится одинаковое количество цифр, например по 3(назовем это число константой baselen).
Предположим, дано число 123456789. Количество цифр в каждом элементе 3.
Для удобства при разных операциях с числами мы будем записывать их задом наперед.
То есть наш массив: [789][456][123]. Это число 123456789 в представлении компьютера.
Не забываем про нулевой элемент, в котором хранится длина. В данном случае 3.
Числа записываются именно таким образом, потому что существует много нюансов, описывать которые очень долго.
- Код:
Const base = 1000
baselen = 3;
Type
TLong = array[0..MaxN] of integer;
Вот и все описание данного типа.
Потихоньку буду выкладывать процедуры, выполняемые с такими числами.
Ср Окт 12, 2016 2:43 am автор SeriousPasha
» требуется несколько JS разработчиков
Пт Окт 07, 2016 10:19 pm автор mrktwn1
» Защита приложения от взлома
Чт Июн 18, 2015 10:28 pm автор stradi
» Ищите программиста или дизайнера?
Пт Мар 27, 2015 6:25 am автор фриланс
» Создание и продвижение сайтов, их развитие.
Ср Мар 25, 2015 12:40 am автор asdfghhgfdsa
» Исходники для студентов + скайп-консультации,помощь в написании программ
Вт Окт 07, 2014 11:25 pm автор Horpion
» IT- технологии для развития бизнеса
Пн Июн 23, 2014 6:11 pm автор dvos12
» Стенли Кубрик "С Широко закрытыми Глазами"
Чт Июн 12, 2014 2:01 am автор Vertuozzz
» Каталог популярных хостинг компаний
Сб Май 10, 2014 7:18 pm автор naik