0 / 0 / 0
Регистрация: 27.10.2020
Сообщений: 1
1

Длинная арифметика. Умножение Карацубы. vector subscript out of range.C++

27.10.2020, 16:18. Показов 317. Ответов 1
Метки c++ (Все метки)

При малых числах всё нормально работает, как только ввожу что-то большее (что и требуется), то выскакивает ошибка vector subscript out of range


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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
int main() {
    const size_t base = 1000 * 1000 * 1000;
    vector <long long> a; vector <long long> b;
    vector <long long> c(a.size() + b.size()+1);
    string sa, sb;
    cin >> sa >> sb;
    //-------------------------------
    for (int i = (long long)sa.length(); i > 0; i -= 9)
        if (i < 9)
            a.push_back(atoi(sa.substr(0, i).c_str()));
        else
            a.push_back(atoi(sa.substr(i - 9, 9).c_str()));
    while (a.size() > 1 && a.back() == 0)
        a.pop_back();
    //-------------------------------
    for (int i = (long long)sb.length(); i > 0; i -= 9)
        if (i < 9)
            b.push_back(atoi(sb.substr(0, i).c_str()));
        else
            b.push_back(atoi(sb.substr(i - 9, 9).c_str()));
    while (b.size() > 1 && b.back() == 0)
        b.pop_back();
    //-------------------------------
    
    for (int i = 0; i < c.size(); ++i) {
        long long carry = 0;
        for (int j = 0; j < a.size(); ++j) {
            c[i + j] += carry + a[i] * b[j];
            carry = c[i + j] / base;
            c[i + j] %= base;
        }
        c[i + a.size() - 1] += carry;
    }
 
    //-------------------------------
    for (int i = 0; i < c.size();i++){
        cout << c[i];
    }
    return 0;
}
Добавлено через 40 минут
vector <int> a; vector <int> b;
string sa, sb;
cin >> sa >> sb;
vector <int> c(sa.length() + sb.length() + 1);

Вот изменил кое-что
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2020, 16:18
Ответы с готовыми решениями:

Struct / Vector / Expression: vector subscript out of range
Добрый вечер. Имеется структура: struct Contact { public: string name; vector&lt;string&gt;...

Vector subscript out of range
Помогите пожалуйста, выводит такую ошибку , не пойму почему #include&lt;iostream&gt;...

Vector subscript out of range
Привет, друзья, у меня следующая проблема: if (!MeteorVec.empty()) { for (int i = 0; i &lt;...

vector subscript out of range
Доброго времени суток! Подскажите пожалуйста, где именно я ошибся, вроде не должен он за пределы...

1
6565 / 4550 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
27.10.2020, 17:16 2
Цитата Сообщение от maxx306 Посмотреть сообщение
При малых числах всё нормально работает, как только ввожу что-то большее (что и требуется), то выскакивает ошибка vector subscript out of range
Цитата Сообщение от maxx306 Посмотреть сообщение
const size_t base = 1000 * 1000 * 1000;
    vector <long long> a; vector <long long> b;
    vector <long long> c(a.size() + b.size()+1);
C++
1
2
3
    const size_t base = 1000 * 1000 * 1000;
    vector <long long> a; vector <long long> b;
    ///vector <long long> c(a.size() + b.size()+1);
C++
1
2
3
4
5
6
7
8
9
    while (b.size() > 1 && b.back() == 0)
        b.pop_back();
    //-------------------------------
 
vector <long long> c(a.size() + b.size()+1);    
 
    for (int i = 0; i < c.size(); ++i) {
        long long carry = 0;
        for (int j = 0; j < a.size(); ++j) {
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2020, 17:16
Помогаю со студенческими работами здесь

Vector subscript out of range
Реализация карманной сортировки: #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;vector&gt; ...

Vector subscript out of range
Доброе утро, прочитал статью про векторы и решил создать один из них, однако при выводе он выдаёт...

Vector subscript out of range
Не понимаю что происходит, объясните пожалуста #include &quot;pch.h&quot; #include &lt;iostream&gt; #include...

Vector subscript out of range
Осталась одна ошибка (ошибка вылетает только на других компах, на компютере где происходит...

Vector subscript out of range
int main() { srand( time(0) ); vector &lt;int&gt; m(10000); int i,n,c,max; while(i&lt;=10000) {...

Expression: vector subscript out of range
Дано задание: Напишите функцию, которая: - называется PalindromFilter - возвращает...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru