Предмет: Информатика, автор: Greektyp

ДАЮ 100 БАЛЛОВ!!!ПРОШУ, РЕШИТЕ, ИЛИ ХОТЯ БЫ НАМЕКНИТЕ!n человек разбили на m команд так, что в каждой команде есть хотя бы один человек. Все члены каждой команды обменялись рукопожатиями. Посчитайте минимальное и максимальное число возможных рукопожатий.

Программа получает на вход целые числа n и m, 1≤m≤n≤100, каждое в отдельной строке, и должна вывести два числа — минимальное и максимальное число рукопожатий.

Ответы

Автор ответа: nelle987
17

Ответ:

Объяснение:

Введу две новые переменные: div(n, m) = a и mod(n, m) = b, где div и mod - целая часть и остаток от деления n на m.

Если в команде k человек, у них будет k (k - 1)/2 рукопожатий: каждый из k людей пожмет руку (k - 1) человеку, но каждое рукопожатие будет посчитано дважды.

Сначала порассуждаем о минимальном количестве рукопожатий. Пусть в одной группе a человек, в другой b, и a - b > 1. Тогда всего рукопожатий в этих двух группах

\dfrac{a(a-1)}2+\dfrac{b(b-1)}2

Переведём одного человека из большой группы в малую. Новое число рукопожатий

\dfrac{(a-1)(a-2)}2+\dfrac{b(b+1)}2

Считаем, на сколько изменилось общее число рукопожатий:

\left(\dfrac{(a-1)(a-2)}2+\dfrac{b(b+1)}2\right)-\left(\dfrac{a(a-1)}2+\dfrac{b(b-1)}2\right)=\\=1-(a-b)

Поскольку мы считали, что a - b > 1, то после перевода количество рукопожатий уменьшилось. Значит, для получения минимального числа рукопожатий количество людей в группах должно отличаться не более, чем на 1. Очевидно, нужно b групп сделать из a + 1 человека, а оставшиеся m - b групп сделать из a человек.

В этом случае количество рукопожатий получится равным

b\cdot\dfrac{a(a+1)}2+(m-b)\cdot\dfrac{a(a-1)}2

Теперь в другую сторону: если нужно увеличить число рукопожатий, нужно, чтобы разность между количествами людей в группах была максимальной. Рассматривая все пары по очереди, получаем, что для этого нужно во все группы, кроме одной, положить по одному человеку. Тогда во всех маленьких группах не будет ни одного рукопожатия, а в большой - ровно

\dfrac{(n-m+1)(n-m)}2

рукопожатий.

Программа (python 3):

n = int(input())

m = int(input())

a, b = divmod(n, m)

print(b * a * (a + 1) // 2 + (m - b) * a * (a - 1) // 2)

print((n - m + 1) * (n - m) // 2)

Похожие вопросы
Предмет: Русский язык, автор: Аноним

 В каждом столбике найди и укажи наречие: 

а) сплошной; д) полночь; и) далёкий; 
б) сплошь; е) спрячь; к) далеко; 
в) мелочь; ж) брошь; л) удали; 
г) отрежь; з) навзничь; м) далёк. 

3. Определи группу наречий меры и степени: 

а) вдвоём, немного, издали; 
б) очень, втрое, совсем; 
в) чересчур, наверху, всегда; 
г) громко, сверху, вчера; 
д) сослепу, накануне, назло; 
е) крайне, почти, наверху, 

4. Выдели словосочетание, в котором употреблено наречие цели: 

а) оскорбили нарочно; 
б) шли наугад; 
в) работали дружно; 
г) вернулись невзначай. 

5. Определи значение наречий в каждом из предложений. 
Внезапно он понял. 
а) причины; б) времени; в) цели; г) образа действия. 

Трижды он приходил к нему. 
а) причины; б) времени; в) меры и степени; г) образа действия. 

Он относился к нему по-товарищески. 

а) причины; б) времени; в) меры и степени; г) образа действия. 

6. Найди ошибку в определении значения наречия: 

а) пошёл утром (времени); 
б) жил поблизости (места); 
в) задел умышленно (причины); 
г) совершенно не узнал (меры и степени); 
д) громко запел (меры и степени). 

7. Укажи группу указательных наречий: 

а) туда, где-то, нигде; 
б) всюду, издалека, везде; 
в) там, оттуда, тогда; 
г) кое-где, где-нибудь, негде. 

8. В каждой строке отметь отрицательные наречия

а) тут, где, негде, где-то; 
б) там, ничуть, зачем-то, тогда; 
в) зачем, когда, куда, никуда. 

9. Определи предложения, в которых употреблены наречия в сравни¬тельной степени. 

а) Музыка зазвучала громче. 
б) Мы стали говорить тише и вскоре 
замолчали. 
в) Его голос громче, чем мой. 
г) Все товары в этом магазине дороже. 
д) Он продавал эту вещь дороже. 

10. Выбери предложение, в котором встречается наречие в превосходной степени. 
а) Она была красивее других. 
б) В этой ситуации он оказался мудрее всех. 
в) Спортсмен пробежал дистанцию быстрее всех.