Вопрос задан 29.09.2023 в 07:50. Предмет Информатика. Спрашивает Solovyova Anastasiya.

СРОЧНО ПОМОГИТЕ!!! СИРИУС!!! C++!!! Большое числоВася написал на длинной полоске бумаги большое

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Добряк Макс.

#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;

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи вам нужно объединить все строки в одну строку и отсортировать её в порядке убывания, чтобы получить максимальное число. Важно помнить, что строки, начинающиеся с нулей, не могут влиять на результат, поэтому их можно просто проигнорировать при сортировке.

Вот 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++ и выполнить его, чтобы получить максимальное число.

0 0

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

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

Последние заданные вопросы в категории Информатика

Задать вопрос