Как можно считать числа около 10^250 в pascal? именно считать, не просто хранить. все доступные типы данных не подходят, т.е. нужно использовать что-то другое.
194
366
Ответы на вопрос:
Вот пример вычисления факториала числа 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
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
ValeriyaPetra28.06.2020 20:45
-
незнайка343102.07.2020 14:26
-
SmolentsevaMasha17.09.2020 00:12
-
enikandrova0411.08.2021 18:15
-
Ололошка58003.08.2021 06:59
-
yuliana08070410.03.2023 01:46
-
aaaaaaaahhh14.03.2023 09:24
-
Akosh1119.03.2020 03:54
-
polli1109200207.04.2020 02:36
-
DoraDreamer06.03.2021 02:21
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.