Как разбить число на элементы массива в с++?

Необходимо разбить вводимое число на элементы массива чтобы каждый элемент был разрядом числа...
informatics.mccme.ru/mod/statements/view3.php?id=2...
Это ссылка на задачу, которую мне необходимо решить. Я планирую решить ее следующим образом. Разбить два входных числа на массивы. Потом потом найти все парные элементы и заключить их в массив. отсортировав по убыванию просто вывести массив. Хотел бы получить ответ на поставленный вопрос, либо альтернативный способ решения..^_^
  • Вопрос задан
  • 8204 просмотра
Решения вопроса 1
@AleexF
То, что вы хотите сделать:
#include <iostream>
using namespace std;

const int N = (int)1e5+1;

string s;
int a[N];

int main()
{
    cin >> s;
    int idx = 0;
    for (int i = 0; i < s.length(); i++) {
        a[idx] = s[i] - '0';
        idx++;
    }
    for (int i = 0; i < idx; i++) {
        cout << a[i] << ' ';
    }
    return 0;
}

Вариант покороче:
#include <iostream>
using namespace std;

const int N = (int)1e5+1;

string s;
int a[N];

int main()
{
    cin >> s;
    int idx = 0;
    for (int i = 0; i < s.length(); i++) a[idx++] = s[i] - '0';
    for (int i = 0; i < idx; i++) cout << a[i] << ' ';
    return 0;
}

Вариант с векторами:
#include <iostream>
using namespace std;

const int N = (int)1e5+1;

string s;
vector <int> a[N];

int main()
{
    cin >> s;
    for (int i = 0; i < s.length(); i++) a.push_back(s[i] - '0');
    for (int i = 0; i < a.size(); i++) cout << a[i] << ' ';
    return 0;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@khrisanfov
Программист
Во-первых в C++ нет возможности работать с разрядами, минимальный размер это char. Во-вторых ввод пользователя поступает в виде строки (массив char), числа тут вообще не причем (символы можно сортировать также как и числа).
Ответ написан
Комментировать
zagayevskiy
@zagayevskiy
Android developer at Yandex
Тебе не надо читать числа, тем более, 100000 знаков - это длинная арифметика. Надо просто посимвольно читать ввод. Задача простая.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Учитывая, что в условии допускается 100000-значное число, то работать с ним как с числом в С++ так просто не получится. Задача решается с помощью подсчёта цифр как символов вводимых строк. Для каждой из двух входных строк надо посчитать количество каждых цифр. Получится два массива по 10 элементов. Затем, начиная с 9 надо вывести цифры в количестве, равном минимальному из двух значений соответствующих ячеек массива.
Например:
280138
798081
Первый массив:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
+---+---+---+---+---+---+---+---+---+---+
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 2 | 0 |

Второй массив:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
+---+---+---+---+---+---+---+---+---+---+
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 1 |

Минимумы:
| 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+---+---+---+---+---+---+---+---+---+---+
| 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |

Результат:
8810
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы