Вкорзине находятся 16 овощей: 8 помидоров, 4 кабачка(-ов), 2 моркови и 2 свеклы. какое количество информации содержится в сообщениях о том, что из корзины случайным образом были последовательно взяты с возвратом помидор (i1), кабачок (i2), морковь (i3) и свекла (i4).
Код для питона:
def solve(a):
def count(r,c):
return a[r][c] if r >= 0 and r < len(a) and c >= 0 and c < len(a[r]) and a[r][c] != None else 0
a[0][0] = 1
for step in range(1, len(a) + len(a[0]) - 1):
row, col = (0, step) if step < len(a[0]) else (step - len(a[0]) + 1, len(a[0]) - 1)
while col >= 0 and row < len(a):
if a[row][col] != None:
a[row][col] = count(row-1, col) + count(row, col-1)
row, col = row+1, col-1
return a[-1][-1]
Поле задаём в виде списка списков:
field = [
[0,0,0,0,0,None,None,None],
[0,0,None,0,0,0,0,None],
[0,0,0,0,0,0,0,0],
[0,None,0,0,0,0,0,0],
[0,0,0,0,None,0,0,0],
[0,0,0,0,0,0,0,0],
[None,None,0,0,0,None,0,0],
[None,None,0,0,0,0,0,0]
]
Объяснение:
Если нужно просто решение, то я приложил картинку
#include <iostream>
using namespace std;
int main()
{
int i,n,n2=0,n3,digit;
cin >> n; //Вводим число. Может быть отрицательным.
n3 = abs(n); //Для удаления цифр нужно положительное число
i = 1; //Переменная для количества десятков.
while(n3>0) { //Условия для выполнения цикла
digit = n3 % 10; //Получаем последнюю цифру
n3 = n3 / 10; //Уменьшаем число
if(digit!=3 && digit!=6){ //Проверка цифры
n2 = n2 + digit * i; //Создаем число умножая на десятки
i = i * 10; //Добавляем десятки
}
}
cout << ((n<0)?-n2:n2); //Вывод результата с добавление знака
}
Объяснение:
Есть цикл While