Длинка в Pascal

Revision ru1, by gepardo, 2018-01-12 13:21:33

Привет, Codeforces!

Когда говорят про языки программирования со встроенной реализацией длинной арифметики, обычно говорят о таких языках, как Java или Python. Сегодня я расскажу про длинку в языке Pascal, а, точнее, в его реализации Free Pascal Compiler.

Простейший код, который читает два "длинных" числа и складывает их, выглядит так:

Код

Модуль gmp содержит все классы и операторы дя работы с "длинными" числами.

Как он работает? Этот модуль содержит заголовки функций, импортируемые из GNU Multiprecision Library. Программа и библиотека связываются динамически, поэтому для работы программы необходимо, чтобы эта библиотека была установлена. К счастью, в большинстве дистрибутивов Linux она установлена по умолчанию и поэтому может быть использована в таких системах, как ejudge и Яндекс.Контест. В тестирующих системах на Windows библиотека не установлена, поэтому такая штука не сработает.

Для удобства работы в модуле реализована объектно-ориентированная обёртка над функциями libgmp, для которой перегружены все необходиые операторы (да-да, во Free Pascal есть перегрузка операторов!)

Что еще примечательно, в libgmp реализовано быстрое извлечение целочисленного квадратного корня. Поэтому можно написать очень простой, быстрый и короткий код на задачу F с заочного тура Открытки.

Код
Tags длинка, паскаль, открытка, паскаль жив, gmp

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en1 English gepardo 2018-01-12 13:43:58 2096 Initial revision for English translation
ru1 Russian gepardo 2018-01-12 13:21:33 2064 Первая редакция (опубликовано)