Дан рекурсивный алгоритм: procedure F(n: integer); begin if n>o then begin; writeln(*); F(n-2); F(n-1); F(n-1); end; writeln(*); end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(5)?
// PascalABC.NET 3.1, сборка 1172 от 19.02.2016 var a:array[1..15] of integer; i,k:integer; begin Randomize; k:=0; for i:=1 to 15 do begin a[i]:=Random(20)+1; Write(a[i],' '); if a[i]>10 then k:=k+1 end; Writeln; Writeln('k=',k) end.
1. Очевидно в формулировке задания пропущена еше одна буква - Е Решение: Проще всего перевести последовательность букв в шестиричную систему счисления. Тогда получим: А ->0, Г -> 1, Д -> 2, E -> 3, П -> 4, Р ->5 Упорядоченную последовательность слов можно записать так: 1. ААА - 000 2. ААГ - 001 3. ААД - 002
N. ГАА - 100 -наше первое слово начинающееся на Г Переведем число 100 из шестиричной системы счисления в десятичную и получим: 1 *6^2+0*6^1+0*6^0=36 Так как список слов начинается с 1, то надо 36 увеличить на единицу. ответ: 37
// PascalABC.NET 3.1, сборка 1172 от 19.02.2016
begin
Writeln('k=',ArrRandom(15,1,20).Println.Count(x->x>10))
end.
Тестовое решение
4 16 14 9 11 18 17 14 14 15 1 1 9 10 15
k=9
2. А вот так учат решать в школе...
// PascalABC.NET 3.1, сборка 1172 от 19.02.2016
var
a:array[1..15] of integer;
i,k:integer;
begin
Randomize;
k:=0;
for i:=1 to 15 do begin
a[i]:=Random(20)+1;
Write(a[i],' ');
if a[i]>10 then k:=k+1
end;
Writeln;
Writeln('k=',k)
end.
Тестовое решение:
18 15 7 6 3 3 10 6 6 15 2 16 16 2 12
k=6
Решение:
Проще всего перевести последовательность букв в шестиричную систему счисления. Тогда получим:
А ->0, Г -> 1, Д -> 2, E -> 3, П -> 4, Р ->5
Упорядоченную последовательность слов можно записать так:
1. ААА - 000
2. ААГ - 001
3. ААД - 002
N. ГАА - 100 -наше первое слово начинающееся на Г
Переведем число 100 из шестиричной системы счисления в десятичную и получим:
1 *6^2+0*6^1+0*6^0=36
Так как список слов начинается с 1, то надо 36 увеличить на единицу.
ответ: 37