Некоторый ал¬го¬ритм из одной це¬поч¬ки сим¬во¬лов по¬лу¬ча¬ет новую це¬поч¬ку сле¬ду¬ю¬щим образом. Сна¬ча¬ла вы¬чис¬ля¬ет¬ся длина ис¬ход¬ной це¬поч¬ки символов; если она нечётна, то уда¬ля-ет¬ся пер¬вый сим¬вол цепочки, а если чётна, то в се¬ре¬ди¬ну це¬поч¬ки до¬бав¬ля¬ет¬ся сим¬вол А. В по-лу¬чен¬ной це¬поч¬ке сим¬во¬лов каж¬дая буква за¬ме¬ня¬ет¬ся буквой, сле¬ду¬ю¬щей за ней в рус¬ском ал-фа¬ви¬те (А — на Б, Б — на В и т. д., а Я — на А). По¬лу¬чив¬ша¬я¬ся таким об¬ра¬зом це¬поч¬ка яв¬ля¬ет¬ся ре¬зуль¬та¬том ра¬бо¬ты алгоритма. Например, если ис¬ход¬ной была це¬поч¬ка РУКА, то ре¬зуль¬та¬том ра¬бо¬ты ал¬го¬рит¬ма будет це-поч¬ка СФБЛБ, а если ис¬ход¬ной была це¬поч¬ка СОН, то ре¬зуль¬та¬том ра¬бо¬ты ал¬го¬рит¬ма будет це-поч¬ка ПО.
Дана це¬поч¬ка сим¬во¬лов БРА. Какая це¬поч¬ка сим¬во¬лов получится, если к дан¬ной це¬поч¬ке при¬ме¬нить опи¬сан¬ный ал¬го¬ритм два¬жды (т. е. при¬ме¬нить ал¬го¬ритм к дан¬ной цепочке, а затем к ре¬зуль¬та¬ту вновь при¬ме¬нить алгоритм)? Рус¬ский алфавит: .
Программа:
program z;
var k,s,x:integer;
begin
k:=0; {начальное значение количества двузначных чисел}
s:=0; {начальное значение суммы двузначных чисел}
while True do {открываем бесконечный цикл}
begin
readln(x); {вводим число х}
if x=0 then break; {если введенное число равно 0, то остановить цикл}
if (x>9)and(x<100) then {если число двузначное, т.е. от 10 до 99}
begin
k:=k+1; {количество увеличиваем на 1}
s:=s+x; {увеличиваем предыдущее значение суммы на число х}
end;
end;
if k=0 then writeln('NO') {если двузначных чисел не было, то вывод NO}
else writeln(s/k); {иначе вывод ср.арифметического}
end.
type
t=array[1..30] of integer;
var
a:t;
i,h,max,max1,y:integer;
q,c:real;
procedure chet(a:t);
var
i,z:integer;
begin
z:=0;
for i:=1 to 30 do
if(odd(a[i])=false) then inc(z);
writeln(z);
end;
begin
for i:=1 to 30 do
read(a[i]);
//1
chet(a);
//2
h:=0;
c:=0;
for i:=1 to 30 do
if((a[i] mod 3 = 0) and (a[i] mod 9 <> 0) and (a[i]>9) and (a[i]<100)) then begin inc(h);
c:=c+a[i];
end;
if(h=0) then writeln(-1)
else writeln(c/h);
//3
h:=0;
max:=0;
for i:=1 to 30 do begin
if((odd(a[i])=false) and (y=0)) then begin
h:=i;
y:=1;
continue;
end;
if((y>0) and ((odd(a[i])=false))) then
inc(y)
else
if(y>max) then begin
max:=y;
max1:=h;
y:=0;
end
else y:=0;
end;
for i:=max1 to max+max1-1 do
write(a[i],' ');
writeln;
//4
readln(h);
y:=a[h];
for i:=h to 29 do
a[i]:=a[i+1];
for i:=1 to 29 do
write(a[i],' ');
for i:=29 downto h do
a[i+1]:=a[i];
a[h]:=y;
writeln;
//5
max:=0;
max1:=0;
for i:=1 to 30 do begin
if(a[i]>max) then begin
max1:=max;
max:=a[i];
end;
if((a[i]>max1) and (a[i]<max)) then
max1:=a[i];
end;
writeln(max1);
end.