Prof
17-10-2011, 21:12
Доброго времени суток, ув. форумчане! Создал себе отдельную тему так как прогнозирую решать много задачек на С++ ;)
Подскажите, как реализовать такую задачку, ато чтото никак не могу допереть:
Условие
Пусть n — любое натуральное число, а последовательность i1, i2, ... , in сожержит все натуральные числа от 1 до n включительно. Нарушением порядка в такой последовательности называют систему таких двух неравенств, что оправдываются: j < k и ij > ik. Если последовательность возрастает, то количество нарушений порядка равно 0. Если последовательность спадает, то такое количество равно n(n – 1)/2. Во всех остальных случаях это количество расположена между указанными величинами.
Задание
Установите четность количества нарушений порядка последовательности.
Входящие данные
В первой строке входного файла указано количество последовательностей m. Каждый из следующих m строк содержит натуральное число n и последовательность различных натуральных чисел от 1 до n включительно: i1, i2, ... , in при 2 ≤ m ≤ 100, 2 ≤ n ≤ 1 048 576. У 50 % тестов n ≤ 4096.
Исходящие данные
Единственная строка выходного файла должна содержать число в шестнадцатеричной системе счисления, соответствующее двоичному числу которое образовано из m символов - нулей или единиц - без пробела: k-й символ строки - это остаток от деления на 2 числа нарушений порядка k-й последовательности, заданной (k + 1)-й строкой входного файла.
Пример
input.dat:
5
3 1 2 3
3 2 3 1
3 1 3 2
4 2 3 4 1
4 3 4 1 2
output.sol:
6
Объяснение: (00110)2 = (6)16
Подскажите, как реализовать такую задачку, ато чтото никак не могу допереть:
Условие
Пусть n — любое натуральное число, а последовательность i1, i2, ... , in сожержит все натуральные числа от 1 до n включительно. Нарушением порядка в такой последовательности называют систему таких двух неравенств, что оправдываются: j < k и ij > ik. Если последовательность возрастает, то количество нарушений порядка равно 0. Если последовательность спадает, то такое количество равно n(n – 1)/2. Во всех остальных случаях это количество расположена между указанными величинами.
Задание
Установите четность количества нарушений порядка последовательности.
Входящие данные
В первой строке входного файла указано количество последовательностей m. Каждый из следующих m строк содержит натуральное число n и последовательность различных натуральных чисел от 1 до n включительно: i1, i2, ... , in при 2 ≤ m ≤ 100, 2 ≤ n ≤ 1 048 576. У 50 % тестов n ≤ 4096.
Исходящие данные
Единственная строка выходного файла должна содержать число в шестнадцатеричной системе счисления, соответствующее двоичному числу которое образовано из m символов - нулей или единиц - без пробела: k-й символ строки - это остаток от деления на 2 числа нарушений порядка k-й последовательности, заданной (k + 1)-й строкой входного файла.
Пример
input.dat:
5
3 1 2 3
3 2 3 1
3 1 3 2
4 2 3 4 1
4 3 4 1 2
output.sol:
6
Объяснение: (00110)2 = (6)16