Исходный код:
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крин из редактора кода тоже прикрепил)
1)Задание:
#include <iostream>
#include <iomanip>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main(){
setlocale(LC_ALL, "Russian");
int Indexmax=0;
srand(time (NULL));
int max = 0;
const int N=19;
int array[N];
int i;
for(i=0;i<N;i++)
{
array[i]=rand()%50;
cout<< setw(5) <<array[i];
}
cout << endl;
for(i=0;i<N;i++)
{
if(array[i]>max && array[i] % 5 == 0)
{
max=array[i];
}
}
cout << endl;
if(max)
cout<<"max=" << max << endl;
else
cout << "Чётных нету";
return 0;
}
2) Задание:
#include <iostream>
#include <iomanip>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main(){
setlocale(LC_ALL, "Russian");
int last2 ;
int last;
srand(time (NULL));
const int N=19;
int array[N];
int i;
cout<< "До замены: " << endl;
for(i=0;i<N;i++)
{
array[i]=rand()%50 - 10;
cout<< setw(5) <<array[i];
}
cout << endl;
for(i=0;i<N;i++)
{
if(array[i]>0)
{
last = array[i];
}
}
cout<<"После замены: " << endl;
for(i=0;i<N;i++)
{
if(array[i]<0)
{
array[i]=last;
}
cout<< setw(5) <<array[i];
}
cout << endl;
cout << "Последнее число массива: "<< last;
return 0;
}