Сдать решение d-цветные клетки
имя входного файла: collection.in или стандартный поток ввода
имя выходного файла: collection.out или стандартный поток вывода
ограничение времени: 1 с
ограничение памяти: 256m
цветные клетки
чемпион по межгалактическим шахматам гарик проспалов любит коллекционировать шахматные доски.
сегодня он купил себе очередную шахматную доску размера n × m, состоящую из клеток k цветов от 0 до k - 1. то есть, клетка, стоящая в i-й строке и j-м столбце имеет цвет (i + j) mod k (в данном случае mod - остаток от деления). строки и столбцы нумеруются с 0. для того, чтобы внести эту доску в коллекцию, гарик должен составить её статистику. а именно, он должен для каждого цвета от 0 до k - 1 записать, какое количество клеток покрашено в этот цвет. так как размер доски может быть большой, то он попросил вас составить статистику данной доски.
напишите программу, которая позволит ему решить эту весьма непростую .
формат входных данных
вводятся три целых числа n, m, k (1 ≤ n, m ≤ 109, 1 ≤ k ≤ 2 · 105) - размеры доски и количество цветов соответственно.
формат результата
выведите через пробел k целых чисел, где i-е число обозначает количество клеток, покрашенных в i-й цвет (i от 0 до k - 1).
примеры
входные данные
8
8
2
результат работы
32 32
входные данные
5
5
4
результат работы
7 6 6 6
примечания
первый пример соответствует стандартной шахматной доске.
второй пример на рисунке ниже.
для работы с большими целыми числами в этой следует использовать 64-битный тип данных. в языке pascal предусмотрен тип int64, а в c++ - тип long long.
на любом языке
program chess;
var N,M,K,I:int64;
begin
readln(N,M,K);
if ((N mod K)=0) then if ((M mod K)=0) then
for I:=K downto 1 do
writeln((N*M)/K);
if ((N mod K)<>0) then if ((M mod K)<>0) then
writeln(((N*M)div K)+1);
for I:=K-1 downto 1 do
writeln((N*M)div K);
end.
Объяснение: