Информатика ЕГЭ 8 задание разбор
8-е задание: «Измерение количества информации» Уровень сложности — базовый, Требуется использование специализированного программного обеспечения — нет, Максимальный балл — 1, Примерное время выполнения — 4 минуты.
Проверяемые элементы содержания: Знание о методах измерения количества информации
Сколько вариантов шифра или кодовых словШифр кодового замка представляет собой последовательность из пяти символов, каждый из которых является цифрой от 1 до 6.
Сколько различных вариантов шифра можно задать, если известно, что цифра 1 должна встречаться в коде ровно 1 раз, а каждая из других допустимых цифр может встречаться в шифре любое количество раз или не встречаться совсем?
Ответ: 3125
-
✎ Решение теоретическое:
Найдем количество вариантов двумя разными способами (можно выбрать любой из них): ✎ 1 способ. Найдем количество вариантов методом перебора:
✎ 2 способ. Найдем количество вариантов при помощи формулы комбинаторики:
✎ Решение с использованием программирования:
begin var n := 0; var str := '123456'; foreach var s1 in str do foreach var s2 in str do foreach var s3 in str do foreach var s4 in str do foreach var s5 in str do begin if (s1 + s2 + s3 + s4 + s5).CountOf('1') = 1 then n += 1; end; print(n) end.
## var d:='123456'.Cartesian(5) .where(w->w.countOf('1')=1)// кол-во '1' в слове .count.print
n=0 str='123456' for s1 in str: for s2 in str: for s3 in str: for s4 in str: for s5 in str: if (s1+s2+s3+s4+s5).count('1')==1: n+=1 print(n)
Шифр кодового замка представляет собой последовательность из пяти символов, каждый из которых является либо буквой (A или B) или цифрой (1, 2 или 3).
Сколько различных вариантов шифра можно задать, если известно, что в коде присутствует ровно одна буква, а все другие символы являются цифрами?
Ответ: 810
-
✎ Решение теоретическое:
✎ Решение с использованием программирования:
begin var n := 0; var str := 'AB123'; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do for var s4 := 1 to length(str) do for var s5 := 1 to length(str) do begin var res := str[s1] + str[s2] + str[s3] + str[s4] + str[s5]; if (res.CountOf('A') = 1) and (res.CountOf('B') = 0) or (res.CountOf('B') = 1) and (res.CountOf('A') = 0) then n += 1; end; print(n) end.
## var d:='АВ123'.Cartesian(5) .where(w->w.count(letter -> letter in 'АВ')=1)// кол-во букв в слове .count.print
n=0 str='AB123' for s1 in str: for s2 in str: for s3 in str: for s4 in str: for s5 in str: if ((s1+s2+s3+s4+s5).count('A')==1 and (s1+s2+s3+s4+s5).count('B')==0) or ((s1+s2+s3+s4+s5).count('B')==1 and (s1+s2+s3+s4+s5).count('A')==0): n+=1 print(n)
Олег составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Олег использует 4-буквенные слова, в которых есть только буквы A, Б, В, Г, Д и Е, причём буква Г появляется ровно 1 раз и только на первом или последнем месте. Каждая из других допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем.
Сколько различных кодовых слов может использовать Олег?
Ответ: 250
-
✎ Решение теоретическое:
N = n1 * n2 * n3 * … * nL = n L
✎ Решение с использованием программирования:
begin var n := 0; var str := 'АБВГДЕ'; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do for var s4 := 1 to length(str) do begin var res := str[s1] + str[s2] + str[s3] + str[s4]; if (res[1]='Г') and (res[2]<>'Г') and (res[3]<>'Г') and (res[4]<>'Г') or (res[1]<>'Г') and (res[2]<>'Г') and (res[3]<>'Г') and (res[4]='Г') then n += 1; end; print(n) end.
n=0 str='АБВГДЕ' for s1 in str: for s2 in str: for s3 in str: for s4 in str: if (s1 =='Г') and (s2!='Г') and (s3!='Г') and (s4!='Г') or (s1 !='Г') and (s2!='Г') and (s3!='Г') and (s4=='Г'): n+=1 print(n)
Шифр кодового замка представляет собой последовательность из пяти символов, каждый из которых является одной из букв X, Y или Z.
Сколько различных вариантов шифра можно задать, если известно, что буква X должна встречаться в коде ровно 2 раза, а каждая из других допустимых букв может встречаться в шифре любое количество раз или не встречаться совсем?
Ответ: 80
-
✎ Решение теоретическое:
✎1 способ. Перебор всех вариантов:
✎ 2 способ. При помощи формулы поиска числа сочетаний:
Число сочетаний из n элементов по k элементов:
* Факториал числа: n! = 0 * 1 * 2 * 3 * .. * n
✎ Решение с использованием программирования:
begin var n := 0; var str := 'xyz'; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do for var s4 := 1 to length(str) do for var s5 := 1 to length(str) do begin var res := str[s1] + str[s2] + str[s3] + str[s4] + str[s5]; if res.countOf('x') = 2 then // или if res.Count(y -> y = 'x') = 2 then n += 1; end; print(n) end.
## var d:='XYZ'.Cartesian(5) .where(w->w.countOf('X')=2) .count.print
n=0 str='xyz' for s1 in str: for s2 in str: for s3 in str: for s4 in str: for s5 in str: if (s1+s2+s3+s4+s5).count('x') == 2: n+=1 print(n)
Сколько слов длины 5, начинающихся с согласной буквы и заканчивающихся гласной буквой, можно составить из букв ОСЕНЬ? Каждая буква может входить в слово несколько раз. Слова не обязательно должны быть осмысленными словами русского языка.
Ответ: 500
-
✎ Решение теоретическое:
N = n1 * n2 * n3 * … * nL = n L
✎ Решение с использованием программирования:
begin var n := 0; var str := 'ОСЕНЬ'; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do for var s4 := 1 to length(str) do for var s5 := 1 to length(str) do begin var res := str[s1] + str[s2] + str[s3] + str[s4] + str[s5]; if ((res[1] = 'С') or (res[1] = 'Н')) and ((res[5] = 'О') or (res[5] = 'Е')) then n += 1; end; print(n) end.
'ОСЕНЬ'.Cartesian(5).Where(w->w[0] in 'СН').Where(w->w[4] in 'ОЕ').Count.Print
str = 'ОСЕНЬ' n = 0 for s1 in str: for s2 in str: for s3 in str: for s4 in str: for s5 in str: res = s1 + s2 + s3 + s4 if (s1 == 'С' or s1 == 'Н') and (s5 == 'О' or s5 == 'Е'): n += 1 print(n)
Вася составляет 4-буквенные слова, в которых есть только буквы Л, Е, Т, О, причём буква Е используется в каждом слове хотя бы 1 раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем.
Сколько существует таких слов, которые может написать Вася?
Ответ: 175
-
✎ Решение теоретическое:✎ 1 способ:
N = n1 * n2 * n3 * … где
Результат: 175 ✎ 2 способ:
- Так как по условию буква Е встретится хотя бы 1 раз, значит, можно утверждать, что не может быть такого, чтобы буква Е не встретилась бы ни одного раза.
- Таким образом, рассчитаем случай, когда буква Е встречается все 4 раза (т.е. все случаи) и отнимем от результата невозможный случай: когда буква Е не встретится ни одного раза:
- Вычтем из первого варианта невозможный вариант № 2:
✎ Решение с использованием программирования:
begin var n := 0; var str := 'ЛЕТО'; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do for var s4 := 1 to length(str) do begin var res := str[s1] + str[s2] + str[s3] + str[s4]; if res.countOf('Е') >= 1 then // или if res.Count(y -> y = 'Е') >= 1 then n += 1; end; print(n) end.
n=0 str='ЛЕТО' for s1 in str: for s2 in str: for s3 in str: for s4 in str: if (s1+s2+s3+s4).count('Е') >= 1: n+=1 print(n)
Вася составляет 4-буквенные слова, в которых есть только буквы К, А, Т, Е, Р, причём буква Р используется в каждом слове хотя бы 2 раза. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем.
Сколько существует таких слов, которые может написать Вася?
Ответ: 113
-
✎ Решение теоретическое:
N = n1 * n2 * n3 * … * nL = n L
✎ Решение с использованием программирования:
begin var n := 0; var str := 'КАТЕР'; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do for var s4 := 1 to length(str) do begin var res := str[s1] + str[s2] + str[s3] + str[s4]; if res.CountOf('Р') >= 2 then n += 1; end; print(n) end.
n=0 str='КАТЕР' for s1 in str: for s2 in str: for s3 in str: for s4 in str: if (s1+s2+s3+s4).count('Р') >= 2: n+=1 print(n)
Олег составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Олег использует 5-буквенные слова, в которых есть только буквы A, Б, В, и Г, причём буква Г появляется не более одного раза и только на последнем месте. Каждая из других допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем.
Сколько различных кодовых слов может использовать Олег?
Ответ: 324
-
✎ Решение теоретическое:
N = n1 * n2 * n3 * … * nL = n L
✎ Решение с использованием программирования:
begin var n := 0; var str := 'АБВГ'; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do for var s4 := 1 to length(str) do for var s5 := 1 to length(str) do begin var res := str[s1] + str[s2] + str[s3] + str[s4]+ str[s5]; if (res[1]<>'Г') and (res[2]<>'Г')and (res[3]<>'Г') and (res[4]<>'Г') then n += 1; end; print(n) end.
Вася составляет 4-буквенные слова, в которых есть только буквы К, О, М, А, Р, причём буква А используется в них не более 3-х раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, необязательно осмысленная.
Сколько существует таких слов, которые может написать Вася?
Ответ: 624
-
✎ Решение теоретическое:
N = n1 * n2 * n3 * … * nL = n L
✎ Решение с использованием программирования:
begin var n := 0; var str := 'КОМАР'; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do for var s4 := 1 to length(str) do begin var res := str[s1] + str[s2] + str[s3] + str[s4]; if res.CountOf('А') <=3 then n += 1; end; print(n) end.
## var d:='комар'.Cartesian(4) .where(w->w.countOf('а')<=3).count.print
str = 'КОМАР' n = 0 for s1 in str: for s2 in str: for s3 in str: for s4 in str: res = s1 + s2 + s3 + s4 if res.count('А')<=3: n += 1 print(n)
Сколько существует различных символьных последовательностей длины 3 в четырёхбуквенном алфавите , если известно, что одним из соседей A обязательно является D, а буквы B и C никогда не соседствуют друг с другом?
Ответ: 29
-
✎ Решение теоретическое:
N = n1 * n2 * n3 * … * nL = n L
Из букв С, Р, Е, Д, А составляются трехбуквенные комбинации по следующему правилу – в комбинации не может быть подряд идущих гласных и одинаковых букв.
Сколько всего комбинаций можно составить, используя это правило?
Ответ: 66
-
✎ Решение теоретическое:
✎ Решение с использованием программирования:
### 'среда'.cart(3)// .Select(w -> w.JoinToString('')) // собираем в строку; .where(w->w.Pairwise.All(\(a,b) -> a+b not in 'еае')) .where(w->w.Pairwise.All(\(a,b) -> a<>b)) .count.print
begin var n := 0; var str := 'СРЕДА'; var glas := 'ЕА'; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do begin var res := str[s1] + str[s2] + str[s3]; // условие для подряд идущих гласных if not ((res[1] in glas) and (res[2] in glas) or (res[2] in glas) and (res[3] in glas)) then // условие для подряд идущих одинаковых букв if not ((res[1] = res[2]) or (res[2] = res[3])) then n += 1; end; print(n) end.
str = 'СРЕДА' glas = 'ЕА' n = 0 for s1 in str: for s2 in str: for s3 in str: res = s1 + s2 + s3 if not (s1 in glas and s2 in glas or\ s2 in glas and s3 in glas) : if not (s1 == s2 or s2 == s3) : n += 1 print(n)
Дано слово КОРАБЛИКИ. Таня решила составлять новые 5-буквенные слова из букв этого слова по следующим правилам: 1) слово начинается с гласной буквы; 2) гласные и согласные буквы в слове должны чередоваться; 3) буквы в слове не должны повторяться.
Сколько существует таких слов?
Ответ: 72
-
✎ Решение теоретическое:
Ксюша составляет слова, меняя местами буквы в слове МИМИКРИЯ. Сколько различных слов, включая исходное, может составить Ксюша?
Ответ: 3360
begin var str := 'МИМИКРИЯ'; var set1: set of string; set1 := []; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do for var s4 := 1 to length(str) do for var s5 := 1 to length(str) do for var s6 := 1 to length(str) do for var s7 := 1 to length(str) do for var s8 := 1 to length(str) do begin var slovo := str[s1] + str[s2] + str[s3] + str[s4] + str[s5] + str[s6] + str[s7] + str[s8]; if (slovo.CountOf('М') = 2) and (slovo.CountOf('И') = 3) and (slovo.CountOf('К') = 1) and (slovo.CountOf('Р') = 1) and (slovo.CountOf('Я') = 1) then include(set1, slovo); end; print(set1.count); end.
### 'МИМИКРИЯ'.Permutations // перестановки букв .Select(w->w.JoinToString('')) // собираем в строку .Distinct // выбираем уникальные .Count.Print
Петя составляет шестибуквенные слова перестановкой букв слова АДЖИКА. При этом он избегает слов с двумя подряд одинаковыми буквами. Сколько всего различных слов может составить Петя?
Ответ: 240
-
✎ Решение теоретическое:
✎ Решение с использованием программирования:
begin var s: set of string; s := []; var str := 'АДЖИКА'; for var s1 := 1 to length(str) do for var s2 := 1 to length(str) do for var s3 := 1 to length(str) do for var s4 := 1 to length(str) do for var s5 := 1 to length(str) do for var s6 := 1 to length(str) do begin var res := str[s1] + str[s2] + str[s3] + str[s4] + str[s5] + str[s6]; if (res.CountOf('А') = 2) and (res.CountOf('Д') = 1) and (res.CountOf('Ж') = 1) and (res.CountOf('И') = 1) and (res.CountOf('К') = 1) then if (res[1] <> res[2]) and (res[2] <> res[3]) and (res[3] <> res[4]) and (res[4] <> res[5]) and (res[5] <> res[6]) then include(s, res); end; print(s.count) end.
### 'аджика'.Permutations .Select(w -> w.JoinToString('')) // собираем в строку; .distinct // исключаем дубли .where(s -> not ('аа' in s)) // исключаем две подряд буквы 'а' .count.pr
Маша составляет 7-буквенные коды из букв В, Е, Н, Т, И, Л, Ь. Каждую букву нужно использовать ровно 1 раз, при этом код буква Ь не может стоять на последнем месте и между гласными. Сколько различных кодов может составить Маша?
Ответ: 4080
✎ Решение с использованием программирования: Стоит заметить, что теоретическое решение занимает меньше времени, чем программный способ!