ответ:Вариант №1 (не совсем удачный, как было отмечено в комментариях).
//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)
var n,i,m:integer;
flag:boolean;
begin
readln(n);
flag:=false;
if (n mod 2<>0)then i:=n-1 else i:=n;
while i>0 do begin
if power(2,i)<=n then begin
write(power(2,i),' '); flag:=true;
end;
i:=i-2;
end;
if not flag then writeln(0);
end.
Тест №1
1025
1024 256 64 16 4
Тест №2
1
0
Вариант №2
var a,i,n: integer;
begin
a:=1;readln(n);
i:=trunc(log2(n)); //получим степень двойки для n
//если i нечетное,
//то первое искомое число получаем путем сдвига влево на i-1 в
//двоичном представлении числа иначе сдвиг на i
if (i mod 2)=1 then a:=a shl(i-1) else a:=a shl i;
//далее получаем числа сдвигая вправо на 2 разряда
//в двоичном представлении числа
while a>=2 do begin
write(a,' ');
a:=a shr 2;
end;
end.
Тестовое решение:
2147483647
1073741824 268435456 67108864 16777216 4194304 1048576 262144 65536 16384 4096 1024 256 64 16 4
Поделитесь своими знаниями, ответьте на вопрос:
Синформатикой, нужно , : (решение с параметром, язык pascal) №1)дано натуральное n, вычислить: а) -2/1! +3/2! + (-1)^n *(n+1)/n! (n после единицы это степень) б) 1! /1+ 2! / (1+1/2) ++ n! / (1+1/2++1/n) №2) дано натуральное n, действительное х, вычислить: а) x^1 / 1! + x^2 /2++ x^n / n! б)(1/2 - cosx)(2/3-(cos^2)* n/(n+1) - (cos^n)* x))
// №1 а)
function fact(n: integer): integer;
var
rez, i: integer;
begin
rez : = 1;
for i : = 1 to n do
rez : = rez * i;
fact : = rez;
end;
function pow(a, x: integer): integer;
var
rez, i: integer;
begin
rez : = 1;
for i : = 1 to x do
rez : = rez * a;
pow : = rez;
end;
var
n, i: integer;
r: real;
begin
r : = 0;
write('n = '); readln(n);
for i : = 1 to n do
begin
r : = r + pow(-1, i mod 2) * (i + 1) / fact(i);
end;
writeln('r = ', r);
end.
// №1 б)
function fact(n: integer): integer;
var
rez, i: integer;
begin
rez : = 1;
for i : = 1 to n do
rez : = rez * i;
fact : = rez;
end;
function summ(n: integer): real;
var
i: integer;
rez: real;
begin
rez : = 1;
for i : = 2 to n do
rez : = rez + 1/i;
summ : = rez;
end;
var
n, i: integer;
r: real;
begin
r : = 0;
write('n = '); readln(n);
for i : = 1 to n do
begin
r : = r + fact(i)/summ(i);
end;
writeln('r = ', r);
end.
// №2 а)
function fact(n: integer): integer;
var
rez, i: integer;
begin
rez : = 1;
for i : = 1 to n do
rez : = rez * i;
fact : = rez;
end;
function pow(a: real; x: integer): real;
var
i: integer;
rez: real;
begin
rez : = 1;
for i : = 1 to x do
rez : = rez * a;
pow : = rez;
end;
var
n, i: integer;
r, x: real;
begin
r : = 0;
write('n = '); readln(n);
write('x = '); readln(x);
for i : = 1 to n do
begin
r : = r + pow(x, i) / fact(i);
end;
writeln('r = ', r);
end.
// №2 б)
function pow(a: real; x: integer): real;
var
i: integer;
rez: real;
begin
rez : = 1;
for i : = 1 to x do
rez : = rez * a;
pow : = rez;
end;
var
n, i: integer;
r, x: real;
begin
r : = 1;
write('n = '); readln(n);
write('x = '); readln(x);
for i : = 1 to n do
begin
r : = r * (i / (i + 1) - pow(cos(x), i)) ;
end;
writeln('r = ', r);
end.