Вопрос задан 28.02.2019 в 23:59. Предмет Информатика. Спрашивает Иваненко Александра.

Задача по языку программирования Pascal n школьников делят k яблок “поровну”, то есть так, чтобы

количество яблок, доставшихся любым двум школьникам, отличалось бы не более, чем на 1. Входные данные Программа получает на вход числа n и k. Выходные данные Программа должна вывести количество школьников, которым достанется яблок меньше, чем некоторым из их товарищей.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Кримський Макс.
// PascalABC.NET 3.3, сборка 1576 от 16.11.2017
// Внимание! Если программа не работает, обновите версию!

Begin
var (n, k) := ReadInteger2('Введите n и k');
Writeln(k - (k div n) * n);
end.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи воспользуемся делением с остатком.

Сначала определим, сколько яблок достанется каждому школьнику, если они бы разделили их поровну. Для этого поделим общее количество яблок на количество школьников: avg := n div k.

Теперь у нас есть количество яблок, которые должны достаться каждому школьнику, чтобы они разделили их поровну. Однако, возможно, некоторым из школьников достанется на 1 яблоко больше, чтобы количество, доставшихся школьникам, отличалось бы не более, чем на 1. Поскольку мы уже знаем, что количество яблок avg, для кого-то из школьников будет увеличено на 1, а для остальных останется равным avg-1.

Теперь мы можем рассмотреть два случая:

1) Если k делит нацело n, то это означает, что количество школьников равномерно делится на количество яблок, то есть для каждого школьника достанется avg яблок.

В этом случае количество школьников, которым достанется меньше яблок, чем остальным, равно 0.

2) Если k не делит нацело n, то некоторым школьникам достанется avg+1 яблок, а остальным – avg.

При этом количество школьников, которым достанется меньше яблок, чем некоторым из их товарищей, будет равно остатку от деления n на k.

Таким образом, ответом на задачу будет min(n mod k, k - n mod k), где min(a, b) – функция, возвращающая минимальное значение из a и b.

Приведем пример кода на языке Pascal, реализующего решение задачи:

``` program CountStudentsWithLessApples;

var n, k, avg, result: Integer;

begin // Ввод данных readln(n, k);

// Расчет количества яблок, которые должны достаться каждому школьнику avg := n div k;

// Расчет количества школьников, которым достанется меньше яблок result := min(n mod k, k - n mod k);

// Вывод результата writeln(result); end. ```

Данный код сначала считывает входные данные - числа n и k. Затем производится расчет количества яблок, которые должны достаться каждому школьнику (avg) и количество школьников, которым достанется меньше яблок (result). Наконец, результат выводится на экран с помощью функции writeln.

Примечание: функция min(a, b) может быть реализована следующим образом:

``` function min(a, b: Integer): Integer; begin if a < b then min := a else min := b; end; ```

Эта функция возвращает минимальное значение из двух чисел a и b.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос