Есть ответ 👍

Как можно считать числа около 10^250 в pascal? именно считать, не просто хранить. все доступные типы данных не подходят, т.е. нужно использовать что-то другое.

290
490
Посмотреть ответы 2

Ответы на вопрос:


Вот пример вычисления факториала числа 200 const   n=1000; {максимальное количество цифр в числе} type   big=record       v: array[1..n] of byte; {массив с цифрами числа}       m: integer {количество цифр в числе}   end; function str2big(s: string): big; {переводит строковое представление в big} var   i,n,k,err: integer;   r: big; begin   n: =length(s);   r.m: =n;   for i: =1 to n do   begin       val(s[i],k,err);       r.v[i]: =k   end;   str2big: =r end; function big2str(p: big): string; {переводит представление big в строковое} var   i,n: integer;   c,s: string; begin   s: ='';   n: =p.m;   for i: =1 to n do   begin       str(p.v[i],c);       s: =s+c   end;   big2str: =s end; function truncbig(a: big): big; {усекает незначащие нули} var   i,p,n: integer;   r: big; begin   n: =a.m;   p: =0;   while (p< n) and (a.v[p+1]=0) do p: =p+1;   for i: =1 to n-p do r.v[i]: =a.v[i+p];   r.m: =n-p;   truncbig: =r end; function multbig(a,b: big): big; {возвращает произведение чисел типа big} var   i,j,k,m,n,s: integer;   r: big; begin   m: =a.m; n: =b.m;   for i: =m to m+n do r.v[i]: =0;   r.m: =m+n;   for j: =n downto 1 do   begin       if b.v[j]=0 then r.v[j+m+n-1]: =0       else begin           k: =0;           for i: =m downto 1 do           begin               s : =a.v[i]*b.v[j]+r.v[i + j]+k;               r.v[i+j]: =s mod 10;               k: =s div 10           end;                 r.v[j] : = k       end   end;   multbig: =truncbig(r); end; var   i: integer;   s: string;   bi,bs: big; begin   bs: =str2big('1');   for i: =1 to 200 do begin       str(i,s);       bi: =str2big(s);       bs: =multbig(bs,bi);       end;   s: =big2str(bs);   writeln(s) end. результат 788657867364790503552363213932185062295135977687173263294742533244359449963403342920304284011984623904177212138919638830257642790242637105061926624952829931113462857270763317237396988943922445621451664240254033291864131227428294853277524242407573903240321257405579568660226031904170324062351700858796178922222789623703897374720000000000000000000000000000000000000000000000000
rassiasau
4,8(13 оценок)

Обычное деление столбиком (после деления  ответ записывается в о братном порядке) 122 | 2 122   61 | 2     0   60   30 |  2           1   30   15 | 2                 0   14   7 |  2                       1   6   3 | 2                           1   2   1                               1ответ: 1111010

Популярно: Информатика