Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 19.02.2017
Сообщений: 16

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

06.02.2018, 18:10. Показов 1409. Ответов 4

Студворк — интернет-сервис помощи студентам
При перемножении достаточно больших числе, результат неверный, в середине ответа числа неправильные. В чем проблема?
C++
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
        const int N = 300;
    char number1[N], number2[N];
    int size1, size2;
    cin >> number1 >> number2;
 
    size1 = strlen(number1);
    size2 = strlen(number2);
 
    int size;   //define the largest size in order the rest will be cpmpleted 0
    size1 >= size2 ? size = size1 : size = size2;
 
 
    int *a = new int[size]();   //nullify the arrays
    int *b = new int[size]();       //possible, the size of array can be equal size/6 (with the rounding up)
 
 
                                    //define the sign and fill in the array
    fillMas(a, number1, size1);
    fillMas(b, number2, size2);
 
    //define size new massive (6 digits)
    size % 6 == 0 ? size = size / 6 : size = (size / 6) + 1;
}
void fillMas(int* a, char* number, int size) {
    int i = 0;
 
    if (number[0] == '+' || number[0] == '-')
        i = 1;
 
    for (int j = size - 1, count = 0; j >= i; count++) {
        for (int agent = 0; agent < 6; agent++, j--) {
            if (j < i)
                break;
 
            a[count] += (number[j] - '0')*pow(10, agent);
        }
    }
 
}
   int* mul(int* a, int* b, int size) {
    int *sol = new int[size * 2]();
 
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            __int64 k = (__int64)a[i] * (__int64)b[j] + sol[i + j];
            sol[i + j] = k % 1000000;
            sol[i + j + 1] = k / 1000000;
        }
    }
    return sol;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.02.2018, 18:10
Ответы с готовыми решениями:

Умножение больших чисел
Здравствуйте, я сегодня услышал, что есть какой-то метод умножения и вычитания огромных чисел через вектора, но так его и не нагуглил,...

Умножение больших чисел
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;string&gt; using namespace std; char a,b,c; int aa,bb,cc; int sk=50; int...

Умножение двух больших чисел
дано два 40 значных числа,нужно перемножить их http://e-maxx.ru/algo/big_integer от сюда и других тем с данного форума код не подходит....

4
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
06.02.2018, 18:20
Замени int на unsigned long long
0
0 / 0 / 0
Регистрация: 19.02.2017
Сообщений: 16
06.02.2018, 18:48  [ТС]
Цитата Сообщение от RostikTawer Посмотреть сообщение
Замени int на unsigned long long
Не помогло, так же неверный ответы выдает
0
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
06.02.2018, 18:54
Lol_KekCheburek, можно создать класс, в котором эти числа разделить на две части(не на 2, а например 32421 на 32 421), но это очень долго делать.

Добавлено через 1 минуту
Lol_KekCheburek, но это если числа уже совсем большие, а так на 64:
unsigned __int64 всего 8 байт и числа будут От 0 до 18 446 744 073 709 551 615 ( но это тоже что я раньше писал), 18 квантильйонов, много?
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
06.02.2018, 19:01
Lol_KekCheburek, гуглим по форуму "site:cyberforum.ru длинная арифметика"

Цитата Сообщение от Lol_KekCheburek Посмотреть сообщение
sol[i + j] = k % 1000000
1000000 это число должно быть константой чтобы ошибок не делать

C++
1
const int64_t base = 1e9;
Код не полный, но подозреваю в этом и есть проблема. Где-то число больше базы и оно тянет за собой кучу проблем.

Добавлено через 1 минуту
Длинная арифметика. Умножение двух длинных чисел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.02.2018, 19:01
Помогаю со студенческими работами здесь

Реализовать поиск совершенных чисел для больших чисел (Big Integer)
Всем привет! Задача заключается в поиске совершенных чисел. И тут возникла потребность в использовании типов данных превышающих размеры...

Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20.
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20.

Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. Добавлено через 53 секунды...

Посчитать количество чисел, больших 0 и меньших N, сумма чисел которых и их реверс являются палиндромом
объясните пож не совсем понимаю задание

Умножение чисел
Умножать 33*29*25*21...n и так до заданного с клавиатуры числа.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru