Красивый шарф
Ограничение по времени: 1
секунда
Ограничение по памяти: 256
мегабайт
Алиса решила поздравить своего друга с началом нового учебного года. Впереди холодная осень, поэтому она решила связать для него собственными руками шарф.
Незаметно для друга Алиса узнала, что ему большего всего нравятся k
различных цветов. Алиса приняла решение связать шарф размером n×m
, в котором будут чередоваться полоски различных цветов. Её друг никогда не ищет лёгких путей, поэтому она решила, что шарф с горизонтальными или вертикальными полосками покажется ему слишком примитивным. Алиса решила, что полоски определёенно должны быть диагональными!
Закончив вязать шарф, Алиса вспомнила, что один из k
цветов её друг считает особенным! Это цвет c
, который, по его мнению, приносит школьникам удачу на олимпиадах по информатике. И Алисе стало невероятно интересно, сколько фрагментов шарфа имеют именно такой цвет. Шарф получился очень большим, Алиса очень устала, пока его вязала, поэтому сама она уже не может ответить на этот вопрос и просит вас о помощи…
Более формально шарф можно представить в виде таблицы размером n×m
, каждая клетка которой покрашена в один из k
цветов. Цвета нумеруются от 1
до k
.
Первая строка таблицы покрашена в цвета 1,2,…,k,1,2,…,k
и т.д. Каждая следующая строка получена из предыдущей сдвигом влево на одну клетку. Таким образом, таблица состоит из диагональных полос.
При n=4
, m=8
и k=3
таблица будет иметь следующий вид:
По данным числам n
, m
, k
и c
определите, сколько всего клеток покрашено в цвет c
.
Формат входных данных
Первая строка входных данных содержит натуральное число n
—
ширину шарфа.
Вторая строка входных данных содержит натуральное число m
—
длину шарфа.
Третья строка входных данных содержит натуральное число k
—
количество любимых цветов друга Алисы.
Числа n
, m
и k
не превосходят 109
.
Четвёртая строка входных данных содержит натуральное число c
—
номер особенного цвета (1≤c≤k
).
Формат выходных данных
Программа должна вывести одно целое число —
количество клеток шарфа, которые покрашены в цвет c
.
Обратите внимание, что ответ в этой задаче может превышать возможное значение 32
‑битной целочисленной переменной, поэтому необходимо использовать 64
‑битные целочисленные типы данных (тип int64
в языке Pascal, тип long long в C++, тип long в Java и C#).
Система оценки
Решения, правильно работающие, когда число n
не превосходит 10
, наберут не менее 16
баллов.
Решения, правильно работающие, когда одно из чисел (n
или m
) делится нацело на k
, наберут не менее 16
баллов.
Решения, правильно работающие, когда числа n
и m
не превосходят 800
, наберут не менее 40
баллов.
Решения, правильно работающие, когда числа n
и m
не превосходят 105
, наберут не менее 60
баллов.
Замечание
Картинка соответствует примеру из условия. Шарф имеет размеры 4×8
и состоит из клеток трёх цветов. В цвет 1
покрашены 11
клеток.
Ответ
n = int(input()) #ширина y
m = int(input()) #длина x
k = int(input()) #количество игрушек
c = int(input()) #цвет
StartK = k
table = []
k = 1
for x in range(m):
row = []
for y in range(n):
row.append(k)
k += 1
if k > StartK:
k = 1
table.append(row)
print(sum(row.count(c) for row in table))