Давай попробуем рассуждать логически. Если бы сад состоял из двух деревьев, то было бы два варианта садов: 100+99 и 100+101. Если бы досадили третье дерево, то каждый из предыдущих садов удвоил бы число вариантов: первый 100+99+98 и 100+99+100, и так же второй 100+101+100 и 100+101+102. Подмечаем закономерность: каждое добавляемое дерево удваивает количество вариантов. А сад из одного дерева имеет лишь один вариант.
begin var n := ReadlnInteger('n = '); var m := ReadlnInteger('m = '); var rand := ReadlnInteger('Для ручного ввода нажмите 0');
if rand = 0 then begin a := new integer[m, n]; for var i := 0 to m-1 do for var j := 0 to n-1 do a[i, j] := ReadlnInteger('a[' + i + ',' + j + '] = '); end else a := MatrixRandom(m, n, 1, 100); Println(a);
var b := ArrGen(n, x -> 1); for var i := 0 to m-1 do for var j := 0 to n-1 do if j mod 2 = 0 then b[j] := b[j] * a[i, j];
b.Where((x, i)-> i mod 2 = 0).SortedDescending().Println(); end.
Если бы сад состоял из двух деревьев, то было бы два варианта садов: 100+99 и 100+101. Если бы досадили третье дерево, то каждый из предыдущих садов удвоил бы число вариантов: первый 100+99+98 и 100+99+100, и так же второй 100+101+100 и 100+101+102. Подмечаем закономерность: каждое добавляемое дерево удваивает количество вариантов. А сад из одного дерева имеет лишь один вариант.
Поэтому ответ: 1 * 2 * 2 * 2 * ... (десять двоек умножаются) = 2^10 = 1024 варианта садов.
Думаю что так, если не напутал. Но ты лучше проверь за мной.