profile
Размещено 4 года назад по предмету Информатика от Greektyp

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

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

  1. Ответ на вопрос
    Ответ на вопрос дан nelle987

    Ответ:

    Объяснение:

    Введу две новые переменные: 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)}2right)-left(dfrac{a(a-1)}2+dfrac{b(b-1)}2right)=\=1-(a-b)

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

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

    bcdotdfrac{a(a+1)}2+(m-b)cdotdfrac{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)

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.