Спонсоры олимпиады предоставили оргкомитету N призов для победителей олимпиады. Стоимости всех призов различны и выражаются нату
ральными числами от 1 до N
Перед оргкомитетом возникла задача распределить эти призы между K участниками так, чтобы все участники получили одинаковое количество призов, и, кроме того, суммарные стоимости призов, полученных разными участниками, совпадали.
Гарантируется, что N делится на K
Входные данные На вход программы поступают два числа: N и K (1≤ Выходные данные Выведите K строк по N/K чисел в каждой. В каждое строке должны быть выведены стоимости призов, которые вручаются соответствующему участнику.
Если распределить призы требуемым образом невозможно, выведите одно число 0.
Примеры входные данные 8 2 выходные данные 1 4 6 7 2 3 8 5 входные данные 6 3 выходные данные 1 6 3 4 5 2
Program ryazantsev; var n,k,i,b,sum:integer; begin readln(n,k); sum:=trunc((1+n)/2*n); //Преобразование типа real к int, trunc можно безопасно использовать, т.к. сумма n членов арифметической последовательности целых чисел - всегда целое число if sum mod k <> 0 then writeln(0) else begin for i:=1 to k do begin b:=1; while b<n/k do begin write(i+b-1, ' ', n-i-b+2, ' '); b:=b+k end; writeln() end end; end.
Пример входных данных, при которых программа выведет ноль: 6 2
И ещё, задачка должна быть оценена явно больше, чем на пять баллов)