Алгоритм считается более рациональным, потому что он использует вычисление значения полинома по схеме Горнера, позволяющей минимизировать число умножений и отказаться от операции возведения в степень. Во многих языках программирования операция возведения в степень отсутствует и ее реализуют либо отдельным алгоритмом, либо через основное логарифмическое тождество
<u>PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018</u>
<u>Внимание! Если программа не работает, обновите версию!</u>
begin
var k:=ArrRandom(ReadInteger('n='),-50,50); k.Println;
var (u,j):=ReadInteger2('Введите u и j через пробел:');
Writeln('Cумма первых ',u,' элементов ',k.Take(u).Sum);
Writeln('Произведение последних ',j,' элементов ',
k.TakeLast(j).Aggregate(BigInteger(1),(p,q)->p*q));
end.
<u>Пример</u>
n= 20
39 -18 -16 5 -30 50 -10 -9 34 -33 31 -26 31 -29 8 48 38 37 32 22
Введите u и j через пробел: 12 13
Cумма первых 12 элементов 17
Произведение последних 13 элементов 2781117283830792192
379 КБ = 388096 Б<span>
</span> 379 Б = 0.3701171875 КБ<span> </span>
Я думаю, что правильный ответ В
просто думал В или Г, ты проверь, подумай
For(i=0;i<a.length-1;i++){
for(j=0;j<a.length-i-1; j++)
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
}