Dmitry
Просветленный
(22264)
2 года назад
#include <iostream>
using namespace std;
bool isPalindrome(const int* first, const int* last) {
for (; first < last; ++first, --last)
if (*first != *last)
return false;
return true;
}
int main() {
int data[100], n;
cin >> n;
for (int i = 0; i < n; ++i)
cin >> data[i];
int count = 0;
while (!isPalindrome(data + count, data + n - 1))
++count;
cout << count << '\n';
while (--count >= 0)
cout << data[count] << ' ';
return 0;
}
P.S. Что они подразумевают под "частичностью"? Плохую скорость?
Последовательность чисел назовем симметричной, если она одинаково читается как слева направо, так и справа налево. Например, следующие последовательности являются симметричными:
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) — числа, которые надо дописать к последовательности.
Самое лучшее смотреть на скриншот)