За 2. Взвешиваем по три монеты, если одна легче, то фальшивая среди этих трех, если равновесие, то фальшивая среди трех невзвешененных, потом по одной из тройки где фальшивая, и рассуждаем так же, если одна из монет легче, то она фальшивая, а если равновесие, то фальшивая невзвешенная. Точно также из 27 монет можно определить фальшивую за 3 взвешивания, из 81 за 4, из 3 в степени N монет - за N взвешиваний. А если число монет не равно 3 в степени N, то число взвешиваний равно ближайшей большей степени тройки. То есть, например, если монет 74 - то одну монету тоже можно определить за 4 взвешивания, как и среди 81 монеты. А вот если монет 82, то уже только за 5 взвешиваний - ближайшая большая степень двойки - 243 - 2 в степени 5.
Это 3 разные программы, все проверил на pascal abc.net, удачи) 1)uses crt; var a:array [1..10] of integer; i,n,t:integer; begin clrscr; n:=10; for i:=1 to n do begin read(a[i]); end; t:=1; for i:=n downto 1 do begin if a[i] mod 2=1 then begin write(a[i],' '); t:=t*a[i]; end; end; writeln('Произведение нечетных элементов=',t); readln; end. 2) uses crt; var a:array [1..20] of integer; i,n,t:integer; begin randomize; clrscr; n:=20; for i:=1 to n do begin a[i]:=random(10); write(a[i],' '); end; t:=0; for i:=1 to n do begin if i mod 2=1 then begin write(a[i],' '); t:=t+a[i]; end; end; writeln('Сумма четных элементов=',t); readln; end. 3)uses crt; var a:array [1..20] of integer; i,n,t:integer; begin randomize; clrscr; n:=20; for i:=1 to n do begin a[i]:=random(50)-random(50); write(a[i],' '); end; t:=0; for i:=1 to n do begin if a[i]>0 then begin t:=t+1; end; end; writeln('Кол-во положительных элементов=',t); readln; end.
1)uses crt;
var a:array [1..10] of integer;
i,n,t:integer;
begin
clrscr;
n:=10;
for i:=1 to n do begin read(a[i]); end;
t:=1;
for i:=n downto 1 do begin
if a[i] mod 2=1 then begin write(a[i],' '); t:=t*a[i]; end;
end;
writeln('Произведение нечетных элементов=',t);
readln;
end.
2) uses crt;
var a:array [1..20] of integer;
i,n,t:integer;
begin
randomize;
clrscr;
n:=20;
for i:=1 to n do begin a[i]:=random(10); write(a[i],' '); end;
t:=0;
for i:=1 to n do begin
if i mod 2=1 then begin write(a[i],' '); t:=t+a[i];
end;
end;
writeln('Сумма четных элементов=',t);
readln;
end.
3)uses crt;
var a:array [1..20] of integer;
i,n,t:integer;
begin
randomize;
clrscr;
n:=20;
for i:=1 to n do begin a[i]:=random(50)-random(50); write(a[i],' '); end;
t:=0;
for i:=1 to n do begin
if a[i]>0 then begin t:=t+1; end;
end;
writeln('Кол-во положительных элементов=',t);
readln;
end.