Программируем

Пожалуйста, зарегистрируйтесь или войдите под уже созданным логином. Вы получите полный доступ ко всем статьям форума.

Join the forum, it's quick and easy

Программируем

Пожалуйста, зарегистрируйтесь или войдите под уже созданным логином. Вы получите полный доступ ко всем статьям форума.

Программируем

Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Программируем

На нашем форуме программистов вы сможете найти софт для программирования и другие программы. На форуме обсуждаются многие языки программирования, задачи и их решения. Используются языки: C, Assembler, Pascal, Delphi, Flash и другие.

Последние темы

» Арена искусственных интеллектов Gridwars
Длинная арифметика. Pascal, Delphi. EmptyСр Окт 12, 2016 2:43 am автор SeriousPasha

» требуется несколько JS разработчиков
Длинная арифметика. Pascal, Delphi. EmptyПт Окт 07, 2016 10:19 pm автор mrktwn1

» Защита приложения от взлома
Длинная арифметика. Pascal, Delphi. EmptyЧт Июн 18, 2015 10:28 pm автор stradi

» Ищите программиста или дизайнера?
Длинная арифметика. Pascal, Delphi. EmptyПт Мар 27, 2015 6:25 am автор фриланс

» Создание и продвижение сайтов, их развитие.
Длинная арифметика. Pascal, Delphi. EmptyСр Мар 25, 2015 12:40 am автор asdfghhgfdsa

» Исходники для студентов + скайп-консультации,помощь в написании программ
Длинная арифметика. Pascal, Delphi. EmptyВт Окт 07, 2014 11:25 pm автор Horpion

» IT- технологии для развития бизнеса
Длинная арифметика. Pascal, Delphi. EmptyПн Июн 23, 2014 6:11 pm автор dvos12

» Стенли Кубрик "С Широко закрытыми Глазами"
Длинная арифметика. Pascal, Delphi. EmptyЧт Июн 12, 2014 2:01 am автор Vertuozzz

» Каталог популярных хостинг компаний
Длинная арифметика. Pascal, Delphi. EmptyСб Май 10, 2014 7:18 pm автор naik

Самые активные пользователи

Aster (142)
Длинная арифметика. Pascal, Delphi. Bar_leftДлинная арифметика. Pascal, Delphi. BarДлинная арифметика. Pascal, Delphi. Bar_right 
Exkalibur (89)
Длинная арифметика. Pascal, Delphi. Bar_leftДлинная арифметика. Pascal, Delphi. BarДлинная арифметика. Pascal, Delphi. Bar_right 
Чебурашка (63)
Длинная арифметика. Pascal, Delphi. Bar_leftДлинная арифметика. Pascal, Delphi. BarДлинная арифметика. Pascal, Delphi. Bar_right 
Administrator (34)
Длинная арифметика. Pascal, Delphi. Bar_leftДлинная арифметика. Pascal, Delphi. BarДлинная арифметика. Pascal, Delphi. Bar_right 
ak95 (8)
Длинная арифметика. Pascal, Delphi. Bar_leftДлинная арифметика. Pascal, Delphi. BarДлинная арифметика. Pascal, Delphi. Bar_right 
Пушкин (7)
Длинная арифметика. Pascal, Delphi. Bar_leftДлинная арифметика. Pascal, Delphi. BarДлинная арифметика. Pascal, Delphi. Bar_right 
K4_ (7)
Длинная арифметика. Pascal, Delphi. Bar_leftДлинная арифметика. Pascal, Delphi. BarДлинная арифметика. Pascal, Delphi. Bar_right 
LuDa (7)
Длинная арифметика. Pascal, Delphi. Bar_leftДлинная арифметика. Pascal, Delphi. BarДлинная арифметика. Pascal, Delphi. Bar_right 
Goldcoding (6)
Длинная арифметика. Pascal, Delphi. Bar_leftДлинная арифметика. Pascal, Delphi. BarДлинная арифметика. Pascal, Delphi. Bar_right 
Admin (6)
Длинная арифметика. Pascal, Delphi. Bar_leftДлинная арифметика. Pascal, Delphi. BarДлинная арифметика. Pascal, Delphi. Bar_right 

Партнеры

Длинная арифметика. Pascal, Delphi. Top100 Rambler's Top100

    Длинная арифметика. Pascal, Delphi.

    Aster
    Aster
    Admin
    Admin


    Сообщения : 142
    Очки : 274
    Репутация : 11
    Дата регистрации : 2010-01-07

    Длинная арифметика. Pascal, Delphi. Empty Длинная арифметика. Pascal, Delphi.

    Сообщение автор Aster Ср Май 19, 2010 5:31 pm

    Бороздя просторы интернета, заметил, что многие ничего не знают о реализации длинной арифметики.
    :
    Прошу помочь найти способ возвести в степень 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;

    Вот и все описание данного типа.

    Потихоньку буду выкладывать процедуры, выполняемые с такими числами.

      Текущее время Пн Апр 29, 2024 9:36 pm