DodokhodzhaevVladimirovich
?>

Спонсоры олимпиады предоставили оргкомитету 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

Информатика

Ответы

Nikolai172
//PascalABC.NET
//Версия 3.3, сборка 1634 (14.02.2018)

begin
   var (n, k) := ReadInteger2('n,k->');
   var p := ArrGen(n, t -> t + 1); 
   var m := new integer[k, n div k];
   var sum := p.Sum div k;
   for var i := 0 to k - 1 do
   begin
      var m_sum := sum;
      m[i, 0] := p[0]; m_sum := m_sum - m[i, 0];
      p := p[1:];
      for var j := 1 to (n div k) - 1 do
      begin
         if m_sum - p.Last > 0 then begin m[i, j] := p.max;  m_sum := m_sum - p.Max; p := p[:p.IndexMax]; end
         else 
         begin
            if p.Where(t -> t = m_sum).Count = 1 then m[i, j] := m_sum;
            p := p.Where(t -> t <> m_sum).ToArray;
         end;                                                 
     end;
   end; 
   var t := true;
   for var i := 0 to m.RowCount - 2 do
     if (m.Row(i).sum <> m.Row(i + 1).Sum) or (p.Length <> 0) then begin t := false; break; end;
   if t then m.Println else 0.Println;
end.

Пример(1):
 n,k-> 8 2
   1   8   7   2
   3   6   5   4

Пример(2):
 n,k-> 6 3
   1   6
   2   5
   3   4
xeniagolovitinskaya4546
                                     PascalABC.NET                                       beginvar n := ReadInteger('Введите количество резисторов:');var Rs := ReadArrInteger('Введите их сопротивления:',n);Writeln(NewLine, 'Общее сопротивление цепи равно:');Println(' при последовательном соединении -', Rs.Sum,'Ом');Println(' при параллельном соединении -', 1/Rs.Sum(r->1/r),'Ом');end.

или кратко:

beginvar Rs := ReadArrInteger(3);Println('послед:', Rs.Sum);Println('парал:', 1/Rs.Sum(r->1/r));end.

Пример работы:


решите нужно очень (составить программу определения общего сопротивления электрической цепи при посл
решите нужно очень (составить программу определения общего сопротивления электрической цепи при посл
larazaytseva
                                     PascalABC.NET                                       beginvar n := ReadInteger('Введите количество резисторов:');var Rs := ReadArrInteger('Введите их сопротивления:',n);Writeln(NewLine, 'Общее сопротивление цепи равно:');Println(' при последовательном соединении -', Rs.Sum,'Ом');Println(' при параллельном соединении -', 1/Rs.Sum(r->1/r),'Ом');end.

или кратко:

beginvar Rs := ReadArrInteger(3);Println('послед:', Rs.Sum);Println('парал:', 1/Rs.Sum(r->1/r));end.

Пример работы:


решите нужно очень (составить программу определения общего сопротивления электрической цепи при посл
решите нужно очень (составить программу определения общего сопротивления электрической цепи при посл

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Спонсоры олимпиады предоставили оргкомитету 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
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

vorota-grupp
Aleks120498
misspodvigina
musaevartur
annatarabaeva863
PetrovnaTsukanov
dimon198808744
lebedev815
kseniay2006548
tefdst
Д.О. Игорь
gardenstreet5
Elen-ti81459
membuksdk
dmitrievanata83538