К сожалению, задание составлено некорректно. 0<N≤30 допускает случай N=0. Но тогда ряд значений должен оканчиваться 2⁰, а не 2¹, как указано. Да и массив из N элементов при N=0 - нечто странное. Поэтому принято решение считать значение N<1 ошибкой.
<em>// PascalABC.NET 3.3, сборка 1555 от 21.10.2017</em> <em>// Внимание! Если программа не работает, обновите версию!</em>
begin var n:=ReadInteger; Assert(n>0,'Нарушение: N<=0'); var a:=SeqGen(n,2,i->2*i).Reverse.ToArray; a.Println end.
Program n1; var a: array[1..30] of integer; n,i: integer; function st(i: integer): integer; begin st:=1; for i:=1 to i do st:=st*2 end; begin readln(n); for i:=1 to n do a[i]:=st(i); for i:=n downto 1 do write(a[i],' '); end.