Задача
После Нового года Витэк решил стать банкиром и поэтому стал играться только кубиками с цифрами, ведь будущая профессия требовала умения четко и быстро оперировать с цифрами и числами. И опять ему нравились такие расположения кубиков, на которых последовательность изображенных на них цифр читалась в обеих направлениях одинаково.
Каждое утро, придя в детсад Витэк сразу смотрел на разложенные на полу кубики, и если последовательность не читалась в обеих направлениях одинаково, доставал какое-то количество новых кубиков и размещал их правее, чтобы получить такое размещение кубиков, которое соответствовало его требованию.
Какое наименьшее количество кубиков нужно доставить для этого Витэку?
Входные данные
В первой строке – количество разложенных перед Витэком кубиков [latex]N[/latex] [latex](1 ≤ N ≤ 100)[/latex], в следующей строке последовательность из [latex]N[/latex] цифр на кубиках через пробел.
Выходные данные
Наименьшее количество кубиков, которое нужно правее доставить Витэку.
Тесты
# | Входные данные | Выходные данные |
---|---|---|
1 | 3 1 2 3 |
2 |
2 | 5 1 2 3 4 4 |
3 |
3 | 2 1 2 |
1 |
4 | 2 1 1 |
0 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
/* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; import java.util.Scanner; /* Name of the class has to be "Main" only if the class is public. */ class Main { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n, h=0, k=0; n = in.nextInt(); int[] A = new int [n]; for ( int i = 0; i < n; i++ ) { A[i] = in.nextInt(); } for ( int i = 0; i < n; i++ ) { if ( A[n-1] == A[i] ) { int t = 1; for ( int j = i + 1; j < n - 1; j++ ) { if ( A[j] != A[ n - 1 - t ] ) { k++; } t++; } if ( k == 0 ) { h = i; break; } else k = 0; } } System.out.print(h); } } |
Решение задачи
Читаем поток данных переводя каждое прочитанное число в элемент массива. Для каждого элемента массива проверяем его равенство с последний и если да, то через два цикла(начиная с начала и с конца) проверяем равенство остальных элементов массива по двое и если да, то увеличиваем переменную, от которой будет зависеть ответ, если она в конце будет равна [latex]0[/latex], то выведем число равное номеру элемента массива равного последнему.
Ссылки
Условие задачи на e-olymp.com.
Код решения на ideone.com.