Поделитесь своими знаниями, ответьте на вопрос:
Вы хотите возвести данное число a в некоторую целочисленную степень n, но вашкалькулятор умеет только перемножать числа. Например, вы можете вычислить a 2 = a × a, затем вы можете вычислить a 3 = a 2 × a или a 4 = a 2 × a 2 . Вы можете по-разномуорганизовать вычисление значения a n . Например, вычислить a 5 можно за 4 умножения: 1) a 2= a × a, 2) a 3 = a 2 × a, 3) a 4 = a 3 × a, 4) a 5 = a 4 × a. Но можно вычислить a 5 всего лишь за 3умножения: 1) a 2 = a × a, 2) a 3 = a 2 × a, 3) a 5 = a 3 × a 2. Вам необходимо определить, закакое минимальное число умножений можно вычислить следующие степени: 7, 15, 23, 63.Вычисление каждой из этих степеней должно быть независимо от остальных, то есть привычислении 15-й степени нельзя использовать вычисления, проделанные ранее длявычисления 7-й степени. Вы решаете четыре независимые задачи – за какое минимальноечисло умножений можно вычислить 7-ю степень, 15-ю степень, 23-ю степень и 63-ю степень.
//Если программа не запускается, то обновите версию
uses System.Linq;
begin
begin
writeln('I');
var n := ReadInteger('n=');
Writeln((1 + 1 + Power(2, n - 1)) * n / 2);
end;
begin
writeln;
writeln('II');
var n := ReadInteger('n=');
Writeln(n mod 11 = 0 ? 'YES' : 'NO');
end;
begin
writeln;
writeln('III');
var a := ReadArrInteger('Документы', ReadInteger('n=')).ToList;
writeln;
while a.Any() do
begin
write(a[0], ' ');
a.RemoveAt(0);
if not a.Any then break;
write(a.Last, ' ');
a.RemoveAt(a.Count - 1);
if not a.Any then break;
var n := 0;
if a.Count > 1 then n := a.Count div 2 - 1;
write(a[n], ' ');
a.RemoveAt(n);
end;
end;
end.