Задание №8
Задание № 8
Тема: Знание основных понятий и методов, используемых при измерении количества информации. Время выполнения 4 минуты.
ЕГЭ-2023
Задание 8 ЕГЭ-2023. Демо
Определите количество пятизначных чисел, записанных в восьмеричной системе счисления, в записи которых только одна цифра 6, при этом никакая нечётная цифра не стоит рядом с цифрой 6.
Решение задания № 8 ЕГЭ-2023. Демо
Ответ: 2961
Пример реализации программы
я.п.Python:
alf='01234567'
al0='1234567'
def f(st):
for i in range(6):
if st[i]=='6' and i==0:
if int(st[i+1])%2!=0: return False
elif st[i]=='6' and i ==5:
if int(st[i-1])%2!=0: return False
elif int(st[i+1])%2!=0 or int(st[i-1])%2!=0: return False
else:
return True
cnt=0
for x in al0:
for y in alf:
for z in alf:
for w in alf:
for t in alf:
sl=x + y + z + w + t
if sl.count('6')==1 and f(sl):
cnt +=1
print(cnt)
я.п.C/C++
#include <bits/stdc++.h>
using namespace std;
int nchet(int x){
if(x%2==1)
return true;
}
int ff(int r){
string st;
st=to_string(r);
char ch='6';
int count=std::count(st.begin(),st.end(),ch);
return count;
}
}
int f(int r){
string st;
st=to_string(r);
for(int i =0;i<st.length();i++){
if(st[0]=='6' && i==0)
if(nchet(st[i+1]))
return false;
if(st[4]=='6' && i==4)
if(nchet(st[i-1]))
return false;
if(st[i]=='6')
if(nchet(st[i-1])|| nchet(st[i+1]))
return false;
}
return true;
}
int main()
{
int n, cnt=0,nb=0;
set <int> alf={0,1,2,3,4,5,6,7};
set <int> al0={1,2,3,4,5,6,7};
for(int i : al0)
for(int j : alf)
for(int h : alf)
for(int k : alf)
for(int m : alf){
n=i*10000+j*1000+h*100+k*10+m;
nb=ff(n);
if(nb==1 && f(n))
cnt +=1;
}
cout<<cnt<<endl;
return 0;
}
я.п. PascalABC.net
uses school;
begin
var kf:='01234567';
var kf0:='1234567';
var n_ch:='1357';
var cnt:=0;
foreach var i in kf0 do
foreach var j in kf do
foreach var h in kf do
foreach var x in kf do
foreach var y in kf do
begin
var sl:=i + j + h + x + y;
if sl.Count(x->x='6')=1 then
begin
var ind:=sl.IndexOf('6') + 1; //ind надо увеличивать на +1!
if (ind=1) and (sl[ind+1] not in n_ch) then
cnt +=1;
if (ind=5) and (sl[ind-1] not in n_ch) then
cnt +=1
else
if (ind>1) and (ind<5) and (sl[ind-1] not in n_ch) and (sl[ind+1] not in n_ch) then
cnt +=1;
end;
end;
println(cnt);
end.
я.п. Python (2 способ)
from itertools import product
cnt=0
alf='12345670'
for i in product(alf,repeat=5):
sl=''
for j in i:
sl +=j # составление слова
if sl.count('6')==1 and sl[0]!='0':
ind=sl.find('6')
if ind==0 and sl[ind+1] not in '1357': cnt +=1
elif ind==4 and sl[ind-1] not in '1357': cnt +=1
elif sl[ind-1] not in '1357' and sl[ind+1] not in '1357':
cnt +=1
print(cnt)
ЕГЭ-2024
Задание 8 ЕГЭ-2024. Демо.
Сколько существует восьмеричных пятизначных чисел, не содержащих в своей записи цифру 1, в которых все цифры различны и никакие две чётные или две нечётные цифры не стоят рядом?
Ответ: 180
решение
я.п. Python
from itertools import product
cnt=0
alf='2345670'
rez0=[1,2,1,2,1]
rez1=[2,1,2,1,2]
for i in product(alf,repeat=5):
sl=''
for j in i:
sl +=j # составление слова
s_b=[] #проверка на различные символы в sl
for q in range(len(sl)):
if sl[q] not in s_b and sl[0]!='0':
s_b.append(sl[q])
if len(s_b)==5:
sp=[] # составление шаблонов слов
for q in range(len(sl)):
if int(sl[q])%2==0:
sp.append(2)
elif int(sl[q])%2!=0:
sp.append(1)
if sp==rez0 or sp==rez1: # проверка на совпадение шаблонов
cnt +=1
print(cnt)
я.п. Python (2 способ)
from itertools import product
alf='2345670'
rez1=[1,2,1,2,1]
rez0=[2,1,2,1,2]
cnt=0
for i in product(alf,repeat=5):
sl='';sp=[]
for j in i:
sl +=j
if j not in sp:
sp.append(j)
if len(sl)==len(sp) and sl[0]!='0':
rez=[]
for q in range(len(sl)):
if int(sl[q])%2==0:
rez.append(2)
elif int(sl[q])%2!=0:
rez.append(1)
if rez==rez0 or rez==rez1:
cnt +=1
print(cnt)
я.п.PascalABC.net
//один из способов решения
uses school;
begin
var kf:='01234567';
var kf0:='234567';
var cnt:=0;
foreach var a in kf0 do
foreach var b in kf do
foreach var c in kf do
foreach var d in kf do
foreach var e in kf do
begin
var sl:=a + b + c + d + e;
var sp:=Lst(a);
var p:=1;
if sl.Count(x->x='1')=0 then
begin
for var q:=2 to sl.Length do
if sl[q] not in sp then
sp.Add(sl[q])
else
break;
if sp.Count=5 then
begin
for var q:=1 to sp.Count-1 do
if ((sp[q] in '0246') and (sp[q-1] in '357')) or
((sp[q] in '357') and (sp[q-1] in '0246')) then
p +=1;
if p=5 then
cnt +=1;
end;
end;
end;
println(cnt);
end.
я.п.C/C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, cnt=0;
set <int> kf={0,2,3,4,5,6,7};
set <int> kf0={2,3,4,5,6,7};
set <int>::iterator ik;
string rez0="12121",rez1="21212"; //шаблоны
string chet="0246";
string n_chet="357";
for(int i: kf0)
for(int j: kf)
for(int h: kf)
for(int x: kf)
for(int y: kf){
n=i*10000 + j*1000 + h*100 + x*10 + y;
string sl=to_string(n);
set <int> mn={i,j,h,x,y};
if (mn.size()==5){
string rez="";
for(int q=0;q<sl.size();q++){
if (chet.find(sl[q])!=std::string::npos)
rez +="2";
else
if(n_chet.find(sl[q])!=std::string::npos)
rez +="1";
}
if (rez==rez0 || rez==rez1){
cnt +=1;
}
}
}
cout<<cnt<<endl;
return 0;
}
Задание №8 второй тип.
Задание 8 - пример 1
Все четырёхбуквенные слова, составленные из букв Б, В, Г, Д, записаны в алфавитном порядке и пронумерованы. Вот начало списка:
1. ББББ
2. БББВ
3. БББГ
4. БББД
5. ББВБ
Запишите слово, стоящее на 244-м месте от начала списка.
Данную задачу можно решать и без среды программирования. Заменим символы цифрами по следующему правилу:
Б - 0
В - 1
Г - 2
Д - 3
В следствие чего наши данные будут выглядеть так:
0000
0001
0002
0003
0010
То есть, наша таблица превращается в упорядоченный ряд чисел четырехричной системы счисления, где каждое число пронумеровано. Обратим внимание на тот факт, что число 0 имеет порядковый номер "1", число 1 - номер "2" и т.д. Следовательно, число, расположенное под номером "244" будет иметь значение 243. Переведем его в четырехричную СС: 3303. Вернем символы: ДДБД.
Ответ: ДДБД
Решение задачи я.п.
я.п. Python
kf='БВГД'
cnt=0
for i in kf:
for j in kf:
for z in kf:
for q in kf:
sl=i+j+z+q
cnt +=1
if cnt==244:
print(sl)
break
я.п. PascalABC.net
uses school;
begin
var kf:='БВГД';
var cnt:=0;
foreach var i in kf do
foreach var j in kf do
foreach var h in kf do
foreach var u in kf do
begin
var sl:=i + j + h + u;
cnt +=1;
if cnt=244 then begin
println(sl);
break
end;
end;
end.