program fantscrin;
var a,c: array [1..1000] of integer;
i,n,s,j:integer;
Begin
write('N = '); readln(n);
s:=0;
for i:=1 to n do
begin
write('c[',i,'] = '); readln(c[i]);
s:=s+c[i];
end;
writeln('S = ', s);
j:=0;
for i:=1 to n do
if c[i] > s / n then
begin
j:= j + 1;
a[j]:= c[i];
end;
for i:=1 to j do
write(a[i], ' ')
End.
var a,b,i,z,x:integer;
q:array [1..20] of integer;
begin
write('Верхняя граница='); readln(a);
write('Нижняя граница='); readln(b); x:=a-b; randomize;
for i:=1 to 20 do
begin
q[i]:=random(x)+b;
write(q[i],' ');
if (q[i]mod 2=0) then z:=z+q[i];
end;
writeln;
write('Сумма четных чисел=',z);
end.
Ответ:
1) 0 + 1 = 1
2) 1 + 1 = 2
3) 2 + 1 = 3
4) 3 + 1 = 4
5) 4 * 2 = 8
6) 8 * 2 = 16
7) 16 + 1 = 17
8) 17 + 1 = 18
9) 18 + 1 = 19
10) 19 * 2 = 38
11) 38 * 2 = 76
12) 76 * 2 = 152
13) 152 * 2 = 304
14) 304 * 2 = 608
15) 608 + 1 = 609
16) 609 + 1 = 610
17) 610 + 1 = 611
18) 611 * 2 = 1222
19) 1222 * 2 = 2444
20) 2444 * 2 = 4888
21) 4888 + 1 = 4889
Объяснение:
Гораздо проще подобрать порядок действий, если рассматривать конечное число в двоичной системе счисления:
Все вычисления становятся гораздо проще и нагляднее, ведь для двоичного числа умножение на два -это просто появление справа одного нуля,
а добавление единицы -если справа (т.е. в младшем разряде) был нуль, то станет единица, а если была единица, то станет нуль, а единица перейдёт в следующий разряд (и там повторится тот же выбор).
Таким образом очень легко получить число 4889 этими действиями в двоичной системе. Получить его можно разными комбинациями указанных действий, нужно только лишь продумать действия так, чтобы их число получилось равным 21.
Вот как это выглядит, если показать результаты в двоичном виде (смотри прилагаемую картинку):