Напишите программу, которая заполняет массив из N элементов степенями числа 2, начиная с...

0 голосов
443 просмотров

Напишите программу, которая заполняет массив из N элементов степенями числа 2, начиная с 2 1 до 2 N , в обратном порядке.

Входные данные
Входная строка содержит размер массива N . Гарантируется, что 0 < N ≤ 30 .

Выходные данные
Программа должна вывести содержимое массива: N первых степеней числа 2 в обратном порядке (последний элемент должен быть равен 2 1 ).

Примеры
входные данные
5
выходные данные
32 16 8 4 2


Информатика (340 баллов) | 443 просмотров
0

Писать на русском?

0

2^1

Дано ответов: 2
0 голосов
Правильный ответ

К сожалению, задание составлено некорректно.
0⁰, а не 2¹, как указано. Да и массив из N элементов при N=0 - нечто странное. Поэтому принято решение считать значение N<1 ошибкой.<strong>

// PascalABC.NET 3.3, сборка 1555 от 21.10.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger;
  Assert(n>0,'Нарушение: N<=0');<br>  var a:=SeqGen(n,2,i->2*i).Reverse.ToArray;
  a.Println
end.

Примеры
5
32 16 8 4 2

20
1048576 524288 262144 131072 65536 32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2

(150k баллов)
0 голосов

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.

(149k баллов)