
СРОЧНО ПОМОГИТЕ!!! СИРИУС!!! C++!!! Большое числоВася написал на длинной полоске бумаги большое
число и решил похвастаться своему старшему брату Пете этим достижением. Но только он вышел из комнаты, чтобы позвать брата, как его сестра Катя вбежала в комнату и разрезала полоску бумаги на несколько частей. В результате на каждой части оказалось одна или несколько идущих подряд цифр. Теперь Вася не может вспомнить, какое именно число он написал. Только помнит, что оно было очень большое и, разумеется, не начиналось с нуля. Чтобы утешить младшего брата, Петя решил выяснить, какое максимальное число могло быть написано на полоске бумаги перед разрезанием. Помогите ему!Входные данныеВ первой строке входных данных содержится натуральное число NN, не превосходящее 100100 — количество строк. Далее заданы NN строк, каждая из которых содержит последовательность цифр. Каждая строка содержит от 11 до 100100 цифр. Гарантируется, что хотя бы в одной строке первая цифра отлична от нуля.Выходные данныеВыведите одну строку — максимальное число, которое могло быть написано на полоске перед разрезанием.ПримерыВвод 14 2 20 004 66 Вывод66220004

Ответы на вопрос

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
void readList(int n, vector <string> &a) {
for (int i=0; i<n; i++) cin >> a[i];
}
void writeList(vector <string> &a) {
for (int i=0; i<(int)a.size(); i++) cout << a[i];
}
bool cmp(string x, string y) {
return x + y > y + x;
}
int main() {
int n; cin >> n;
vector <string> a(n);
readList(n, a);
sort(a.begin(), a.end(), cmp);
writeList(a);
return 0;
}



Для решения этой задачи вам нужно объединить все строки в одну строку и отсортировать её в порядке убывания, чтобы получить максимальное число. Важно помнить, что строки, начинающиеся с нулей, не могут влиять на результат, поэтому их можно просто проигнорировать при сортировке.
Вот C++ код, который решает эту задачу:
cpp#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
// Функция для сравнения строк при сортировке
bool compareStrings(const string& a, const string& b) {
return (a + b) > (b + a);
}
int main() {
int n;
cin >> n;
vector<string> numbers(n);
for (int i = 0; i < n; ++i) {
cin >> numbers[i];
}
// Сортируем строки в порядке убывания
sort(numbers.begin(), numbers.end(), compareStrings);
// Объединяем отсортированные строки в одну строку
string result;
for (const string& num : numbers) {
result += num;
}
cout << result << endl;
return 0;
}
Вы можете вставить этот код в вашу среду разработки C++ и выполнить его, чтобы получить максимальное число.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili