Флэшбэки из Вьетнама Снаружи, за дверью хранилища, Дэнни Оушена ожидает комната, пол которой состоит из квадратных плиток. Передвигаться по плиткам можно только следуя определённым правилам, в противном случае немедленно включится сигнал тревоги. Ну прямо настоящее минное поле!
К счастью, наш герой Вьетнамскую войну, и ему доводилось бывать в передрягах и
посерьёзнее. К тому же правила передвижения по плиткам ему известны, так что выбраться из
комнаты для него не составит труда.
План комнаты можно представить клеточным полем размером N × M. Каждая клетка на нем –
это одна плитка. Дэнни знает, что для каждой плитки с координатами (i, j) определён коэффициент
Ci,j , который равен сумме всех подряд расположенных чисел, начиная от минимального из чисел i
и j и заканчивая максимальным из них, взятой по модулю K.
Например, для плитки (5, 3) при K = 9 выходит, что C5,3 = (3 + 4 + 5) mod 9 = 3.
Дэнни может переходить на соседнюю плитку вперёд или вправо либо перепрыгивать через одну
плитку в тех же направлениях. Если коэффициент плитки, на которой оказался Оушен, окажется
меньше коэффициента плитки, на которой он стоял до этого, то включится сигнал тревоги.
Дэнни хочет знать только одно число — количество , которыми он может попасть с
плитки с координатами (1, 1) на плитку с координатами (N, M), возле которой находится заветная
дверь, не подняв при этом тревоги. Причём это число также должно быть взято по модулю K.
ветерану Вьетнама достойно справиться с этой задачей.
Формат входных данных
Во входном файле записаны через пробел три целых числа: N, M и K
(1 6 N, M 6 103
, 1 6 K 6 1018).
Считается, что в начале Дэнни находится на плитке (1, 1).
Шаг на одну плитку вперёд означает попадание на плитку (2, 1), а вправо – на плитку (1, 2).
Правая верхняя плитка имеет координаты (N, M).
Формат выходных данных
В выходной файл нужно вывести одно целое число — количество , которыми Дэнни
может попасть на плитку (N, M), не подняв тревоги, взятое по модулю K.
Примеры
input.txt output.txt
2 2 4 0
2 3 2 1
var
a, b, c, s: real;
begin
Writeln('Вычислите S поверхности параллелепипеда.');
Writeln('Введите исходные данные:');
Write('Длина(см)? '); Readln(a);
Write('Ширина(см)? '); Readln(b);
Write('Высота(см)? '); Readln(c);
s := 2 * (a * b + b * c + c * a);
Writeln('Площадь поверхности: ', s, ' кв.см.')
end.
Тестовое решение:
Вычислите S поверхности параллелепипеда.
Введите исходные данные:
Длина(см)? 9
Ширина(см)? 7.5
Высота(см)? 5
Площадь поверхности: 300 кв.см.
program p2;
var
ct,ck,s:real;
kt,kk:integer;
begin
Writeln('Вычисление стоимости покупки');
Writeln('Введите исходные данные:');
Write('Цена тетради(руб.)? '); Readln(ct);
Write('Количество тетрадей? '); Readln(kt);
Write('Цена карандашей(руб.)? '); Readln(ck);
Write('Количество карандашей? '); Readln(kk);
s:=ct*kt+ck*kk;
Writeln('Стоимость покупки: ',s:0:2,' руб.')
end.
Тестовое решение:
Вычисление стоимости покупки
Введите исходные данные:
Цена тетради(руб.)? 2.75
Количество тетрадей? 5
Цена карандашей(руб.)? 0.85
Количество карандашей? 2
Стоимость покупки: 15.45 руб.