М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
MSZaDrotE
MSZaDrotE
09.08.2021 09:02 •  Информатика

Дети в детском саду получили большой мешок с конфетами. их в мешке м штук. решено, что конфеты должны быть распределены среди n детей. каждый ребенок указал количество конфет, которое он хочет. если ребенку не достанется такого количество конфет, которое он хочет, он будет обижен. «гнев» будет равным квадрату количества желаемых, но не полученных конфет. например, если вася утверждает, что хочет 32 конфеты, но получает лишь 29, ему не хватает 3 конфет, поэтому его «гнев» будет равным 9. распределить конфеты так, чтобы сумма детского гнева была минимальной. напишите алгоритм.

👇
Ответ:
хорош16
хорош16
09.08.2021
Решил жадным алгоритмом

#include <bits/stdc++.h>

using namespace std;

int ans,n,a[10101],m,b[10101];

main () {

   cin >>n >>m;

   for (int i = 1; i <= n; i++)

    cin >>a[i];

   sort(a + 1, a + n + 1);

for (int i = 1; i <= n; i++)

     if (a[i] <= m) m-=a[i];

     else

     b[i] = pow(a[i] - m,2);  

for (int i = 1; i <= n; i++)

 if (b[i]) ans+=b[i];

cout <<ans;

}

4,5(63 оценок)
Открыть все ответы
Ответ:
KOTOMAKS06
KOTOMAKS06
09.08.2021

//PacalABC.NET 3.4.2

//Используется формула аналогичная формуле Бине для чисел

//Фибоначчи

const

 index = power(33, 0.5);

 a1 = power((19 + 3 * index), 1 / 3);

 a2 = power((19 - 3 * index), 1 / 3);

 b = power((586 + 102 * index), 1 / 3);

var

 n: smallint;

function tribonacthi(n: smallint): biginteger;

begin

 if (n = 1) or (n = 2) then result := 0

 else

   result := RoundBigInteger(3 * b * ((power((1 / 3 * (a1 + a2 + 1)), n - 1)) / (power(b, 2) - 2 * b + 4)));

end;

begin

 try

   n := readinteger('Введите количество элементов для вывода:');

 except

   on system.formatexception do

     writeln('Неверный формат ввода');

 end;

 for var i := 1 to n do write(tribonacthi(i), ' ');

end.

4,5(70 оценок)
Ответ:
mrkrbnv
mrkrbnv
09.08.2021

//PacalABC.NET 3.4.2

//Используется формула аналогичная формуле Бине для чисел

//Фибоначчи

const

 index = power(33, 0.5);

 a1 = power((19 + 3 * index), 1 / 3);

 a2 = power((19 - 3 * index), 1 / 3);

 b = power((586 + 102 * index), 1 / 3);

var

 n: smallint;

function tribonacthi(n: smallint): biginteger;

begin

 if (n = 1) or (n = 2) then result := 0

 else

   result := RoundBigInteger(3 * b * ((power((1 / 3 * (a1 + a2 + 1)), n - 1)) / (power(b, 2) - 2 * b + 4)));

end;

begin

 try

   n := readinteger('Введите количество элементов для вывода:');

 except

   on system.formatexception do

     writeln('Неверный формат ввода');

 end;

 for var i := 1 to n do write(tribonacthi(i), ' ');

end.

4,5(90 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ