Большие числа

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: Большие числа

Сообщение Лекс Айрин » 11.01.2019 08:24:01

Vadim,это да... Но все равно странно.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4707
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Большие числа

Сообщение iskander » 11.01.2019 11:03:26

Evgen, спасибо, я так и подумал, что это олимпиадная задачка.
Чем она забавна: пусть для определенности коробка имеет размеры 20х20х25 см.
Тогда в объеме видимой части вселенной поместится 3,5*10^82 коробочек(если вика нам не врет).
Соответственно для размещения всех коробочек потребуется 2,86*10^9917 таких вселенных.
Нехилый склад получился :mrgreen: . В общем напомнило рыбу, которая сидела на дереве.
По вашим вопросам: в стандартной установке FPC MPArith нет, это сторонняя библиотека.
Есть модуль gmp, но для его использования необходимо наличие библиотеки gmp на
целевой машине.

PS: если собираетесь участвовать в олимпиадах, про длинную арифметику почитайте обязательно.
Последний раз редактировалось iskander 11.01.2019 11:27:13, всего редактировалось 1 раз.
iskander
постоялец
 
Сообщения: 113
Зарегистрирован: 08.01.2012 18:43:34

Re: Большие числа

Сообщение Снег Север » 11.01.2019 11:20:26

Evgen писал(а):Сначала хочу спросить включена ли библиотека MPArith автоматически у FRC, ели нет, то как ее подключить?

Я дал ссылку в моем первом сообщении в теме. Качаете архив, распаковываете в любое подходящее место, а в проекте указываете путь к этому месту...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 1510
Зарегистрирован: 27.11.2007 16:14:47

Re: Большие числа

Сообщение Evgen » 12.01.2019 01:18:03

Библиотечку MPArith Снег Север я скачал, но куда ее пристроить.
Длинную арифметику читаю.
И всем спасибо за советы
Evgen
незнакомец
 
Сообщения: 9
Зарегистрирован: 03.01.2019 05:10:14

Re: Большие числа

Сообщение Снег Север » 12.01.2019 07:14:58

Evgen, вы просто используете из нее нужные файлы. В своем примере iskander написал, какие и дал пример использования. В свойствах проекта у вас есть настройки, где искать дополнительные юниты, там прописываете путь к месту, куда распаковали MPArith. Или, на худой конец, копируете нужные файлы прямо к своему проекту.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 1510
Зарегистрирован: 27.11.2007 16:14:47

Re: Большие числа

Сообщение Vadim » 12.01.2019 13:10:33

Evgen
По поводу MPArith.
Если Вы по каким-то обстоятельствам используете текстовую IDE из FreePascal, то из скачанного архива скопируйте себе в каталог своей программы файлы:
- mp_types, btypes (он нужен для предыдущего модуля), mp_base, mp_prng.
- *.inc файлы.
Vadim
долгожитель
 
Сообщения: 3133
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Большие числа

Сообщение Evgen » 13.01.2019 04:48:09

Спасибо, я многому научился у ВАС
Evgen
незнакомец
 
Сообщения: 9
Зарегистрирован: 03.01.2019 05:10:14

Re: Большие числа

Сообщение Evgen » 19.01.2019 03:40:59

И снова я прошу помощи. Вот такая задачка.
На промежутке А,В найти все простые числа (1 сек., 256 МiБ; 1≤A≤10е12, A≤B, B−A≤2•10е6.)
Вот мой код:
program prostere;
type ms=array[1..1000000] of byte;
var a,b:^longint;i,j,k:longint; s:^ms;
begin
new(a); new(b); new(s); readln(a^,b^);
if (a^=b^) and (a^=1) then k:=0 else
if (a^=b^) and (a^=2) then k:=1 else
if (a^=1) and (b^=2) then k:=1 else
if (a^=b^) and (b^ mod 2 = 0) then k:=0 else
if b^-a^ = 2*10e6 then k:=0 else

begin
s^[1]:=0;
for i:=2 to b^ do s^[i] :=1;
i:=2;
while i*i<b^ do begin
if s^[i]=1 then begin
j:=i*i; while j<=b^ do begin
s^[j]:=0; j:=j+i end;
end;
i:=i+1;
end;
k:=0;
for i:=a^ to b^ do
if s^[i]=1 then k:=k+1; end;
writeln(k);
dispose(s);
dispose(a);
dispose(b);
end.

Использовал решето Ератосфена (но туту максимальное А -10е7 (больше елементов в масиве не проходит).
Как поступить? Может хто поможет.
С уважением Еvgen
Evgen
незнакомец
 
Сообщения: 9
Зарегистрирован: 03.01.2019 05:10:14

Re: Большие числа

Сообщение Снег Север » 19.01.2019 07:00:57

Evgen, главное что мне непонятно в вашем коде - зачем вы постоянно используете указатели??? Это требование ваших преподавателей? Эти разыменования, освобождение памяти - это же неудобно и просто лишнее.
По существу вопроса - в FPC есть
type Int64 = - 9223372036854775808..9223372036854775807
который должен решить вашу проблему с диапазоном чисел в той задаче.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 1510
Зарегистрирован: 27.11.2007 16:14:47

Пред.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Рейтинг@Mail.ru
cron