Вопрос задан 24.06.2023 в 00:23. Предмет Информатика. Спрашивает Миронов Дмитрий.

Симметричная последовательность С++ Последовательность чисел назовем симметричной, если она

одинаково читается как слева направо, так и справа налево. Например, следующие последовательности являются симметричными: 1 2 3 4 5 4 3 2 1 1 2 1 2 2 1 2 1 Вашей программе будет дана последовательность чисел. Требуется определить, какое минимальное количество и каких чисел надо приписать в конец этой последовательности, чтобы она стала симметричной. Входные данные Сначала вводится число N — количество элементов исходной последовательности (1≤N≤100). Далее через пробел идут N чисел — элементы этой последовательности, натуральные числа от 1 до 9. Выходные данные Выведите сначала число M — минимальное количество элементов, которое надо дописать к последовательности, а потом M чисел (каждое — от 1 до 9) — числа, которые надо дописать к последовательности. Примеры Ввод Вывод 5 1 2 3 4 5 4 4 3 2 1 9 1 2 3 4 5 4 3 2 1 0 5 1 2 1 2 2 3 1 2 1
0 0
Перейти к ответам

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

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

Ответ:

сори что поздно но вроде бы я решил ток щас

Объяснение:

#include <iostream>

#include <vector>

using namespace std;

int main()

{

   int a;

   cin >> a;

   vector <int> v(a);

   vector <int> ans;

   vector <int> empty;

   for (int i = 0; i < v.size(); i++) {

       cin>>v[i];

   }

   int d = a - 1;

   bool isparity = a%2 == 1;

   for (int i = 0; i < v.size(); i++) {

       if (v[i] == v[d] && (i!=d || (isparity && i == a/2))) {

           d--;

           

       }

       else if (i!=d && i!=a-1) {

           ans = empty;

           for (int j = 0; j <= i; j++) {

               ans.push_back(v[j]);

           }

       }

       else {

           ans = empty;

           for (int j = 0; j < i; j++) {

               ans.push_back(v[j]);

           }

       }

   }

   cout<<ans.size()<<endl;

   for (int i = ans.size()- 1; i >= 0; i--) {

       cout<<ans[i]<<" ";

   }

   return 0;

}

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

Для решения этой задачи вам потребуется написать программу на C++, которая анализирует данную последовательность чисел и определяет минимальное количество и значения чисел, которые нужно добавить в конец последовательности, чтобы она стала симметричной. Вот пример решения задачи:

cpp
#include <iostream> #include <vector> int main() { int N; std::cin >> N; std::vector<int> sequence(N); for (int i = 0; i < N; i++) { std::cin >> sequence[i]; } std::vector<int> result; int M = 0; // Проверка симметричности и поиск чисел для дополнения for (int i = N - 1; i >= 0; i--) { result.push_back(sequence[i]); M++; bool is_symmetric = true; for (int j = 0; j < M; j++) { if (result[j] != result[M - 1 - j]) { is_symmetric = false; break; } } if (is_symmetric) { break; } } // Вывод результата std::cout << M << std::endl; for (int i = 0; i < M; i++) { std::cout << result[i] << " "; } return 0; }

Эта программа сначала считывает входные данные, затем начинает собирать последовательность, добавляя числа с конца и проверяя симметричность после каждого добавления. Как только последовательность становится симметричной, программа выводит минимальное количество чисел, которое нужно добавить, и сами числа.

Примеры ввода и вывода, которые вы предоставили, будут работать с этой программой.

0 0

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

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

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

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