Форум программистов, компьютерный форум, киберфорум
chizz
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Умножение больших чисел

Запись от chizz размещена 05.06.2013 в 16:06
Показов 5186 Комментарии 2
Метки pascal

Функция mult умножает длинное число (задается строкой) на число типа integer. Возвращает результат в строку.

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
 function mult(s1:string;b:integer):string;
 var longnum:array[0..1000] of integer;
     i,c:integer;
     res:string;
  begin
  longnum[0]:=length(s1);
    for i:=0 to longnum[0] do
     longnum[longnum[0]-i+1]:=Ord(s1[i])-48;
     for i:=1 to longnum[0] do
         begin
              longnum[i]:=c+longnum[i]*b;
              c:=longnum[i] div 10;
              longnum[i]:=longnum[i] mod 10;
         end;
     While c>0 do
           begin
           longnum[0]:=longnum[0]+1;
           longnum[longnum[0]]:=c mod 10;
           c:=c div 10;
           end;
       if longnum[longnum[0]]=0 then  mult := '0'
           else
           for i:=longnum[0] downto 1 do begin
             res:=res+IntToStr(longnum[i]);
             mult:=res;
             end;
  end;
 
begin
      writeln(mult('123421343214213443532534514234213421341254325',11111111));
end.
 
// output: 1371348244222222348782223098987425322212445684305075
Может кто-нибудь напишет, как умножить два длинных числа?
Метки pascal
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 2
Комментарии
  1. Старый комментарий
    Аватар для dr.curse
    chizz, вот можно так (код не мой взят с http://e-maxx.ru/)
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    typedef vector<int> lnum;
    ...
    lnum c (a.size()+b.size());
    for (size_t i=0; i<a.size(); ++i)
        for (int j=0, carry=0; j<(int)b.size() || carry; ++j) {
            long long cur = c[i+j] + a[i] * 1ll * (j < (int)b.size() ? b[j] : 0) + carry;
            c[i+j] = int (cur % base);
            carry = int (cur / base);
        }
    while (c.size() > 1 && c.back() == 0)
        c.pop_back();
    Запись от dr.curse размещена 05.06.2013 в 16:32 dr.curse вне форума
  2. Старый комментарий
    Аватар для turbanoff
    Вот так:
    Java
    1
    2
    3
    
    BigInteger first = new BigInteger("123421343214213443532534514234213421341254325");
    BigInteger second = new BigInteger("11111111");
    BigInteger mulResult = first.multiply(second);
    Запись от turbanoff размещена 22.06.2013 в 21:14 turbanoff вне форума
 
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru