С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 25.09.2012
Сообщений: 191

Длинная арифметика

08.11.2013, 09:16. Показов 1604. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вычислить 2 в степени –200.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2013, 09:16
Ответы с готовыми решениями:

Длинная арифметика
Встречаются ли среди цифр числа 2^11213 -1 две подряд идущие девятки?

Длинная арифметика
var m, i: integer; n: int64; begin readln(m); n := 1; for i := 1 to m - 1 do n := n * 2; writeln(n); end.

Длинная арифметика
Встречаются ли среди цифр числа (2 в степени 11213 – 1) две подряд идущие девятки? помогите пожалуйста как решить эту задачу используя...

7
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
08.11.2013, 09:17
Цитата Сообщение от Vad1k Посмотреть сообщение
в степени –200.
точно в -200, или может в 200?
0
0 / 0 / 1
Регистрация: 25.09.2012
Сообщений: 191
08.11.2013, 09:21  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
точно в -200, или может в 200?
именно в -200.
0
Паяльщик
 Аватар для tuy-vasiliy
50 / 50 / 13
Регистрация: 05.11.2013
Сообщений: 404
08.11.2013, 09:31
Pascal
1
2
3
4
5
6
var
a:real;
begin
a:=1/exp(ln(2)*200);
writeln(a);
end.
0
0 / 0 / 1
Регистрация: 25.09.2012
Сообщений: 191
08.11.2013, 09:37  [ТС]
Цитата Сообщение от tuy-vasiliy Посмотреть сообщение
Pascal
1
a:=1/exp(ln(2)*200);
Для чего в коде нужна экспанента?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
08.11.2013, 09:37
tuy-vasiliy, Название темы прочитай, а потом умничай. Нужно вывести точно все примерно 63 знака числа 2^-200
1
0 / 0 / 1
Регистрация: 25.09.2012
Сообщений: 191
08.11.2013, 17:01  [ТС]
дак что, кто-нибудь может помочь? очень нужно
0
Модератор
10398 / 5686 / 3399
Регистрация: 17.08.2012
Сообщений: 17,330
09.11.2013, 03:58
Vad1k, часа три помогал. Жаль, что в Pascal ABC нет динамических массивов... Программа, как она сейчас есть, возводит 2 в отрицательную степень вплоть до 2-14304 без потери точности, и до 2-maxint c потерей точности. Точность - порядка 10000 значащих разрядов. Разбирайтесь. Можете доработать её напильником.
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
program power2;
 
const m = 10000; {точность}
      w = 70; {ширина печати}
 
var s: array [1..m] of byte; {цифры числа}
    i, k: integer; {счётчики}
    j: integer; {количество значащих разрядов}
    p: integer; {степень}
    d: integer; {десятичный порядок}
    f: boolean; {флаг потери точности}
 
 
begin
  repeat
    write('Power = '); {ввод степени}
    readln(p);
    p := abs(p); {почему бы и нет?}
  until p > 0;
  s[1] := 5; {первая цифра после запятой для 2^-1, считаем, что один раз s на два поделили}
  for i := 2 to m do s[i] := 0; {остальные цифры обнуляем}
  j := 2; {пока пусть 2 значащих разряда}
  d := 1; {десятичный порядок пока = -1}
  f := false; {потери точности нет}
  for i := 1 to p - 1 do {цикл деления на 2 аж p - 1 раз}
    begin
      for k := 2 to j do {делим столбиком}
        begin
          s[k] := (s[k - 1] mod 2) * 10 + s[k]; {перенос остатка в следующий разряд}
          s[k - 1] := s[k - 1] div 2 {деление текущего разряда}
        end;
        if s[j] > 9 then {если последний разряд > 9, корректируем число}
          begin
            if j < m {если точность не превышена,}
              then {то увеличиваем количество значащих разрядов на 1}
                begin
                  j := j + 1;
                  s[j - 1] := s[j - 1] div 2; {и корректируем число}
                  s[j] := (s[j - 1] mod 2)
                end
              else {если точность превышена,}
                begin
                  s[j] := s[j] div 2; {усекаем число}
                  f := true {точность потеряна}
                end;
          end;
        while s[1] = 0 do {пока (если) есть незначащий ноль}
          begin
            d := d + 1; {инкремент десятичного порядка}
            for k := 1 to j - 1 do s[k] := s[k + 1]; {сдвигаем число влево}
            s[j] := 0; {последний разряд = 0}
            j := j - 1 {делаем число короче на 1 разряд}
          end;
    end;
  if f then writeln('Precision overflow. Result may be incorrect.'); {произошла потеря точности}
  writeln('2^-', p, ' ='); {ввыводим результат}
  write(s[1]);
  if j > 1 then write('.');
  k := 2; {общее количество напечатанных знаков = 2, потому что уже напечатано X.}
  for i := 2 to j - 1 do {пробегаемся по разрядам}
    begin
      write(s[i]); {печатаем очередной разряд числа}
      k := k + 1; {инкремент количества напечатанных знаков}
      if k mod w = 0 then writeln {печатаем по w знаков}
    end;
  write('e-', d); {печатаем десятичный порядок}
  writeln;
  writeln('Significant digits: ', j - 1); {печатаем количество значащих цифр}
  readln
end.
Всего Вам доброго.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.11.2013, 03:58
Помогаю со студенческими работами здесь

Длинная арифметика
Помогите пожалуйста, если не сложно)) Требуется найти сумму чисел в цикле от 10000 до 1000009, используя длинную арифметику))

Длинная арифметика. ASCII
Вот есть код для нахождения суммы двух &quot;длинных&quot; чисел. Я его разобрал, но один момент все же непонятен... program A+B; var ...

Длинная арифметика, умножение
Вычислить a*b,где числа a и b содержат до 500 и более разрядов.

Длинная арифметика для Pascal
Ребята, кто-нибудь может дать мне ссылки, указания, рекомендации или еще что-то, что связано с темой &quot;Длинная арифметика (то, что...

Длинная арифметика. Деление. Добывание корня?
Ребят, кто-нибудь приведите алгоритм и фрагмент кода для деления длинных чисел и тоже самое для добывания корня с длинного числа. Заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru