#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
int main()
{
setlocale(0, "");
srand(time(NULL));
int A[20];
int amount = 0;
int size;
printf("Введите размер массива: ");
scanf("%d", &size);
for (int i = 0; i < size; i++)
{
A[i] = rand() % 100 - 50;
printf("%d\t", A[i]);
amount += A[i];
}
printf("\n");
if (amount > 50)
{
printf("%d", amount);
}
else
{
for (int i = 0; i < size; i++)
{
printf("%d\t", A[i]);
}
}
}
Объяснение:
#include <stdio.h> // Библиотека ввода - вывода
#include <locale.h> // Библиотека локализации
#include <time.h> // Библиотека для работы со временем
#include <stdlib.h> // Библиотека для рандома
int main()
{
setlocale(0, ""); // Локализация
srand(time(NULL)); // Сброс времени (каждый раз новые числа)
int A[20]; // Создание целочисленного массива размером 20
int amount = 0; // Создание целочисленной переменной amount, хранящей в себе сумму элементов массива
int size; // Создание целочисленной переменной, хранящей в себе размер массива
printf("Введите размер массива: "); // Вывод сообщения в консоль
scanf("%d", &size); // Вводим размер массива с клавиатуры
for (int i = 0; i < size; i++) // Идём по массиву
{
A[i] = rand() % 100 - 50; // Генерация случайных чисел
printf("%d\t", A[i]); // Выводим массив
amount += A[i]; // Суммируем элементы
}
printf("\n"); // Перенос на следующую строку
if (amount > 50) // Если значение переменной amount > 50
{
printf("%d", amount); // Выводим сумму
}
else // Иначе
{
for (int i = 0; i < size; i++) // Идём по массиву
{
printf("%d\t", A[i]); // Выводим элементы массива
}
}
}
Исходный код:
def pack(m, k, l, p=0):
c = 0 # базовый случай когда еще не создавали контейнеры
# если есть что еще фасовать по пакетам
if m >= l:
m -= l
p += 1
c, p, m = pack(m, k, l, p) # продолжаем фасовать муку
# если можно создать контейнер, то создаем
if p >= k:
p -= k
c += 1
return c, p, m
m, k, l = map(int, input().split())
print(*pack(m, k, l))
Примечание:
Часть объяснений выполнено в виде комментариев в коде. Комментарии перед отправкой на проверку рекомендую стереть.
Описание переменных: m - остаток муки на текущий момент, k - кол-во пакетов в контейнере, l - кол-во муки в пакете. c - кол-во полных контейнеров, p - кол-во полных пакетов муки. При рекурсивном погружении фасуем по пакетам, при всплытии фасуем по контейнерам. Грамотная возвращение и передача параметров делают свое дело.
Cкрин из редактора кода тоже прикрепил)
Блок-схема находится во вложении.