Страница: 1 Отображать по:
#551
  
Темы: [Остатки]
Источники: [ Командные олимпиады, ВКОШП, 2001, Задача G ]
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes
Дана последовательность чисел A1, ..., An. Требуется построить последовательность B, где B1 = (An+Bn) mod M, B2 = (A1+B1), ..., Bn = (An-1 + Bn-1).

Фирма Macrohard разработала новый протокол обмена данными по сети. Каждый блок данных при этом обмене состоит из \(N\) чисел в диапазоне от 0 до \(M\)-1 включительно. Чтобы повысить надежность передачи, вместе с блоком данных пересылается контрольный блок такой же длины.

Предположим, что исходный блок состоит из чисел \(a_1\), \(a_2\),…,\(a_N\). Тогда, контрольный блок состоит из чисел \(b_1\), \(b_2\),…,\(b_N\), из диапазона от 0 до \(M\)-1 включительно таких, что выполняются следующие равенства: \(b_1\) = (\(a_N\) + \(b_N\)) mod \(M\), \(b_2\) = (\(a_1\) + \(b_1\)) mod \(M\), ... , \(b_N\) = (\(a_N\)-1 + \(b_N\)-1) mod \(M\) (обозначение \(X\) mod \(M\) обозначает остаток от деления \(X\) на \(M\), например, 7 mod 4 = 3, 6 mod 2 = 0).

Блоки данных, для которых нельзя построить контрольный блок, удовлетворяющий указанному свойству, считаются подозрительными и их передача по сети не разрешается.

Ваня хочет поступить на работу программистом в фирму Macrohard, и в качестве вступительного задания ему поручили написать процедуру построения контрольного блока для заданного блока данных. Помогите ему!

Входные данные

В первой строке вводятся числа \(N\) и \(M\) (1 <= \(N\) <= 1000, 2 <= \(M\) <= \(10^9\)). Следующая строка содержит блок данных, для которого следует построить контрольный блок, числа разделены пробелами.

Выходные данные

В первой строке выведите YES, если для данного блока данных можно построить контрольный блок, и NO, если нельзя. В случае, если контрольный блок построить можно, во второй строке выведите контрольный блок. Числа разделяйте пробелами. Если решений несколько, можно выдать любое из них.

Примеры
Входные данные
4 2
0 0 0 0
Выходные данные
YES
0 0 0 0 
Входные данные
4 2
0 1 0 0
Выходные данные
NO

Страница: 1 Отображать по:
Выбрано
:
Отменить
|
Добавить в контест