Есть ответ 👍

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

210
458
Посмотреть ответы 2

Ответы на вопрос:

marta62
4,6(34 оценок)

//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
cfvceyu2004
4,4(25 оценок)

Чтобы перевести десятичное число в другую систему надо делить его на основание, пока остаток не будет меньше основания. потом записываешь остатки в обратном порядке. 856/8=107 (остаток 0) 107/8=13 (остаток 3) 13/8=1 (остаток 5) 1 меньше чем 8, значит (остаток 1) теперь записываем остатки в обратном порядке 1530 это и есть восьмеричная запись исходного числа. остальное сам, ручками : )

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS