Шифр кодового замка представляет собой последовательность из пяти символов, каждый из которых является цифрой
PDF-версии: горизонтальная · вертикальная · крупный шрифт · с большим полем

Шифр кодового замка представляет собой последовательность из пяти символов, каждый из которых является цифрой
Решение. Количество способов поставить
После того, как определили позиции способами.
Итого всего кодов.
Ответ: 270.
Приведём решение на языке Python.
from itertools import product
alphabet = '1234'
ap=[]
for i in product(alphabet, repeat=5):
if i.count('1') == 2:
ap.append(i)
print(len(ap))
Приведём решение Юрия Лысакова на языке Python.
i = 0
for i1 in '1234':
for i2 in '1234':
for i3 in '1234':
for i4 in '1234':
for i5 in '1234':
s= i1 + i2 + i3 + i4 + i5
if s.count('1') == 2:
i += 1
print(i)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'1234'.Cartesian(5)//пяти символов
.Where(s->s.CountOf('1')=2)
.Count.Print;
end.
Сколько существует различных трёхзначных чисел, записанных в четверичной системе счисления, в записи которых сумма первой и последней цифры строго больше цифры стоящей по середине?
Решение. Приведём решение на языке Python.
from itertools import product
alphabet = '0123'
ap=[]
for i in product(alphabet, repeat=3):
if (i[0] != '0') and (int(i[0]) + int(i[2]) > int(i[1])):
ap.append(i)
print(len(ap))
Ответ: 38.
Приведём решение Бориса Савельева на языке Python.
count = 0
for i in '123':
for j in '0123':
for k in '0123':
if (int(i)+int(k)) > int(j):
count += 1
print(count)
Приведём аналитическое решение Александра Козлова.
Найдем количество различных комбинаций для каждого отдельно взятого случая a = 1, a = 2 и a = 3.
Для a = 1: Условие: 1 + c > b. Это можно переписать как: c > b−1
Теперь рассмотрим возможные значения b:
Если b = 0: c > −1 (все значения c подходят: 0,1,2,3) — 4 комбинации.
Если b = 1: c > 0 (подходящие c: 1,2,3) — 3 комбинации.
Если b = 2: c > 1 (подходящие c: 2,3) — 2 комбинации.
Если b = 3: c > 2 (подходящее c: 3) — 1 комбинация.
Теперь суммируем: 4+3+2+1 = 10
Для a = 2: Условие: 2 + c > b. Это можно переписать как: c > b−2
Рассмотрим возможные значения b:
Если b = 0: c > −2 (все значения c подходят: 0,1,2,3) — 4 комбинации.
Если b = 1: c > −1 (все значения c подходят: 0,1,2,3) — 4 комбинации.
Если b = 2: c > 0 (подходящие c: 1,2,3) — 3 комбинации.
Если b = 3: c > 1 (подходящие c: 2,3) — 2 комбинации.
Теперь суммируем: 4+4+3+2 = 13
Для a = 3: Условие: 3 + c>b. Это можно переписать как: c > b−3
Рассмотрим возможные значения b:
Если b=0: c > −3 (все значения c подходят: 0,1,2,3) — 4 комбинации.
Если b=1: c > −2 (все значения c подходят: 0,1,2,3) — 4 комбинации.
Если b=2: c > −1 (все значения c подходят: 0,1,2,3) — 4 комбинации.
Если b=3: c > 0 (подходящие c: 1,2,3) — 3 комбинации.
Теперь суммируем: 4+4+4+3 = 15
Итого имеем:10+13+15 = 38
Вычисление на языке Python.
k = 0
for a in range(1, 4): # a = 1, 2, 3
for b in range(0, 4): # b = 0, 1, 2, 3
for c in range(0, 4): # c = 0, 1, 2, 3
if (a + c) > b:
k += 1
print('a=',a,'b=',b,'c=',c,'k=',k)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
(0..3).Cartesian(3)
.Where(\(a,b,c)-> (a+c>b)and(a<>0) )
.Count.Print;
end.
Сколько существует различных четырёхзначных чисел, записанных в семеричной системе счисления, в записи которых цифры следуют слева направо в строго убывающем порядке?
Решение. Приведём решение на языке Python.
from itertools import product
alphabet = '0123456'
ap=[]
for i in product(alphabet, repeat=4):
if i[0] > i[1] > i[2] > i[3]:
ap.append(i)
print(len(ap))
Ответ: 35.
Приведём решение Александра Козлова на языке Python.
k = 0
for i1 in range(7):
for i2 in range(7):
for i3 in range(7):
for i4 in range(7):
if i1 > i2 and i2 > i3 and i3 > i4:
k += 1
print(k)
Приведём решение Александра Козлова на языке Python.
def f7(x):
s = ''
while x:
s = str(x%7) + s
x = x//7
return s
k = 0
for i in range(int('6666',7)+1):
s = f7(i)
if len(s) == 4 and s[0] > s[1] > s[2] > s[3] :
k+=1
print(k)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
(0..6).Cartesian(4)//(0..6)cc7 (4)-значных
.Where(\(a,b,c,d)-> (a>b)and(b>c)and(c>d) )
.Count.Print;
end.
Составляют 5-буквенные слова из букв слова ПЯТНИЦА. Найти количество слов, которые не начинаются
Решение. Приведём решение на языке Python.
from itertools import product
count = 0
for p in product("ПЯТНИЦА", repeat=5):
if p.count("Я") == 1 and p[0]!="Н":
count+=1
print(count)
Ответ: 5616.
Приведём другое решение на языке Python.
a = {0: "П", 1: "Я", 2: "Т", 3: "Н", 4: "И", 5: "Ц", 6: "А"}
count = 0
for i in range(0, len(a)):
for j in range(0, len(a)):
for g in range(0, len(a)):
for m in range(0, len(a)):
for n in range(0, len(a)):
s = a[i] + a[j] + a[g] + a[m] + a[n]
if a[i] != 'Н' and s.count('Я') == 1:
count += 1
print(count)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'ПЯТНИЦА'.Cartesian(5)
.Count(s->(s[1] <> 'Н')and(s.CountOf('Я')=1) )
.Print;//5616
end.
Сколько существует чисел, восьмеричная запись которых содержит
Решение. Приведём решение на языке Python.
import itertools
alphabet = "01234567"
cet = "0246"
necet = "1357"
ar = itertools.permutations(alphabet, 5)
arl = []
for e in ar:
arl.append(list(e))
count = 0
for e in arl:
flag = True
for i in range(len(e)-1):
if (e[i] in cet and e[i+1] in cet) or (e[i] in necet and e[i+1] in necet) or e[0] == '0' or e.count('1') != 0:
flag = False
if flag:
count += 1
print(count)
Приведём решение Максима Фатихова на языке Python.
from itertools import *
word = '0234567'
count = 0
for i in permutations(word,5):
x = ''.join(i)
if x[0] != '0':
x = x.replace('7','1').replace('5','1').replace('3','1').replace('6','0').replace('4','0').replace('2','0')
if ('00' not in x) and ('11' not in x):
count += 1
print(count)
Приведём решение Степана Чепурко на языке Python.
from itertools import*
s = permutations('01234567',5)
cnt = 0
for i in s:
p=''.join(i)
if p[0]!='0' and p.count('1')==0:
if int(p[0])%2 != int(p[1])%2 and int(p[1])%2 != int(p[2])%2 and int(p[2])%2 != int(p[3])%2 and int(p[3])%2 != int(p[4])%2:
cnt += 1
print(cnt)
Приведём решение Даны Артюхиной на языке Python.
cnt = 0
for i in range(1, 100000):
i = str(oct(i)[2:])
if len(i) == 5 and '1' not in i:
p = [int(d) for d in i]
if len(set(p)) == 5:
if all(p[i]%2 != p[i+1]%2 for i in range(4)):
cnt += 1
print(cnt)
Ответ: 180.
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'01234567'.Permutations(5) // 8-ричная 5-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->'1' not in s) //не содержит цифру 1
.Where(s->not s.IsMatch('[0246][0246]')) //не две чётные цифры рядом
.Where(s->not s.IsMatch('[1357][1357]')) //не две нечётные цифры рядом
.Count.Print;//180
end.
Определите количество четырехзначных чисел, записанных в десятичной системе счисления, в записи которых все цифры различны и никакие две чётные и две нечётные цифры не стоят рядом.
Решение. Приведём аналитическое решение Юрия Красильникова.
Поскольку нечетные и четные цифры не могут стоять рядом, то число может быть либо вида ЧНЧН, либо НЧНЧ
1. Если первая цифра чётная, то у нас четыре кандидата (число не может начинаться с нуля). На третьем месте может стоять любая из оставшихся четырёх цифр. На втором месте — любая нечетная цифра из пяти, на четвёртом — любая из оставшихся четырёх. Всего
2. Если первая цифра нечетная, то это любая цифра из пяти. На третьем месте любая цифра из оставшихся четырёх. Аналогично на втором месте любая из пяти чётных цифр, на четвёртом — любая из оставшихся четырёх. Всего
Итого
Приведём решение на языке Python.
import itertools
alphabet = "0123456789"
cet = "02468"
necet = "13579"
ar = itertools.permutations(alphabet, 4) #Размещение
arl = []
for e in ar:
arl.append(e)
count = 0
for e in arl:
flag = True
for i in range(len(e)-1):
if (e[i] in cet and e[i+1] in cet) or (e[i] in necet and e[i+1] in necet) or e[0] == '0':
flag = False
if flag:
count += 1
print(count)
Ответ: 720.
Приведём решение Михаила Глинского на языке Python.
k=0
for x in range(1000,10000):
s=str(x)
sp={s[0],s[1],s[2],s[3]}
a1='13579'
a0='02468'
fl=True
for x in range(3):
if s[x] in a1 and s[x+1] in a1 or s[x] in a0 and s[x+1] in a0:
fl=False
if len(sp)==4 and fl==True: k+=1
print(k)
Приведём решение Ильи Андрианова на языке Python.
from itertools import permutations
count = 0
for s in permutations('0123456789', 4):
num = ''.join(s)
if num[0] != '0':
num = num.replace('0', '2').replace('4', '2').replace('6', '2').replace('8', '2')
num = num.replace('3', '1').replace('5', '1').replace('7', '1').replace('9', '1')
if '11' not in num and '22' not in num:
count += 1
print(count)
Приведём решение Юрия Красильникова на языке Python.
from itertools import permutations
def good(p):
return p[0] != '0' and all([int(p[i])%2!=int(p[i+1])%2 for i in range(len(p)-1)])
print(len([p for p in permutations('0123456789',4) if good(p)]))
Приведём решение Арслана Мухамедова (Казань) на языке Python.
from itertools import *
x = permutations('0123456789', 4)
count = 0
for i in x:
if (int(i[0]) % 2 != int(i[1]) % 2) and (int(i[1]) % 2 != int(i[2]) % 2) and (int(i[2]) % 2 != int(i[3]) % 2) and i[0] != '0':
count += 1
print(count)
Приведём решение Александра Козлова на языке Python.
k = 0
for a in '2468':
for b in '13579':
for c in '02468':
for d in '13579':
s = a+b+c+d
if a != c and b != d:
k += 1
for a in '13579':
for b in '02468':
for c in '13579':
for d in '02468':
s = a+b+c+d
if a != c and b != d:
k += 1
print(k)
Приведём решение Егора Чернецова на языке Python.
print(sum(1 for n in range(1000,10000) if len(set(s:=str(n)))==4 and all(int(s[i])%2 != int(s[i+1])%2 for i in range(3))))
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'0123456789'.Permutations(4)//10-чная 4-значных
.Where(s->s[1] <> '0')// Первой цифрой не может быть 0
.Where(s->not s.IsMatch('[02468][02468]'))//никакие две чётные цифры не стоят рядом
.Where(s->not s.IsMatch('[13579][13579]'))//никакие две нечётные цифры не стоят рядом
.Count.Print;
end.
Алиса составляет 6-буквенные слова из букв М, А, Н, Г, У, С, Т. Каждая из букв может встречаться сколько угодно раз, причём первой буквой не может
Сколько различных слов может составить Алиса?
Решение. Приведём решение на языке Python.
from itertools import product
count = 0
for p in product("МАНГУСТ", repeat=6):
if p.count("М") == 2 and p[0]!="А" and p.count("У") >=1:
count+=1
print(count)
Ответ: 9155.
Приведём другое решение на языке Python.
a = {0: "М", 1: "А", 2: "Н", 3: "Г", 4: "У", 5: "С", 6: "Т"}
count = 0
for i in range(0, len(a)):
for j in range(0, len(a)):
for g in range(0, len(a)):
for m in range(0, len(a)):
for n in range(0, len(a)):
for t in range(0, len(a)):
s = a[i] + a[j] + a[g] + a[m] + a[n] + a[t]
if a[i] != 'А' and s.count('М') == 2 and s.count('У') >=1:
count += 1
print(count)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'МАНГУСТ'.Cartesian(6)
.Where(s->s[1]<>'А') // первая буква не А
.Where(s->s.CountOf('У')>=1) // буква У не менее 1 раза
.Where(s->s.CountOf('М')=2) // Ровно две буквы М
.Count.print; // 9155
//тоже в одну строку - выбирай верхний код или нижний
'МАНГУСТ'.Cartesian(6)
.Count(s-> (s[1]<>'А')and(s.CountOf('У')>=1)and(s.CountOf('М')=2) )
.print; // 9155
end.
Сколько существует десятичных чисел, которые делятся
Решение. Для того. чтобы число делилось
Рассмотрим случай, когда число оканчивается
Рассмотрим случай, когда число оканчивается
Составим программу.
Приведём решение на языке Python.
nol=[1]
pat=[1,8]
for i in range(1,10):
nol.append(nol[i-1]*(10-i))
for i in range(2,10):
pat.append(pat[i-1]*(10-i))
print(sum(pat)+sum(nol))
Ответ: 1863219.
Приведём решение Максима Фатихова на языке Python.
from itertools import permutations
word = '0123456789'
c = 0
for j in range(1,11):
for i in permutations(word,j):
x = ''.join(i)
if x[0] != '0' and (x[-1] == '5' or x[-1] == '0'):
c += 1
print(c + 1) #+1 случай когда число равно 0
Приведём решение Юрия Красильникова на языке Python.
from math import perm # число размещений
print(2*sum(perm(9,k) for k in range(10)) - sum(perm(8,k) for k in range(9)))
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
var sm:=1;//добавляем число 0 (1-значное, делится на 5)
for var i:=1 to 10 do
sm+='0123456789'.Permutations(i) // i-значные числа
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Count(s->(s.Last='0')or(s.Last='5') );
sm.Print;{Ответ:1863219}
end.
Игорь составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Игорь использует пятибуквенные слова, в которых могут быть только буквы К, О, Н, Ф, Е, Т, А, причём
Решение. Приведём решение на языке Python.
from itertools import product
count = 0
for p in product("КОНФЕТА", repeat=5):
if p.count("Е") == 2 and p[1]!="Ф":
count+=1
print(count)
Ответ: 1944.
Приведём другое решение на языке Python.
a = {0: "К", 1: "О", 2: "Н", 3: "Ф", 4: "Е", 5: "Т", 6: "А"}
count = 0
for i in range(0, len(a)):
for j in range(0, len(a)):
for g in range(0, len(a)):
for m in range(0, len(a)):
for n in range(0, len(a)):
s = a[i] + a[j] + a[g] + a[m] + a[n]
if a[j] != 'Ф' and s.count('Е') == 2:
count += 1
print(count)
Приведём решение Юрия Красильникова на языке Python.
from itertools import product
print(len([p for p in product('КОНФЕТА',repeat = 5) if p.count('Е') == 2 and p[1] != 'Ф']))
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'КОНФЕТА'.Cartesian(5)
.Where(s->s[2]<>'Ф') // вторая буква не Ф
.Where(s->s.CountOf('Е')=2) // буква Е ровно 2 раза
.Count.print; // 1944
end.
Игорь составляет пятизначные числа, используя цифры девятеричной системы счисления. Сколько различных чисел может составить Игорь, в которых только одна
Решение. Приведём аналитическое решение Юрия Красильникова.
Будем записывать возможные цифры числа в группу цифр в квадратных скобках.
1. Цифра 5 на первом месте. Число: [5] [02468] [01234678] [01234678] [01234678]
Количество чисел 1*5*8**3 = 2560
2. Цифра 5 на втором месте. Число: [2468] [5] [02468] [01234678] [01234678]
Количество чисел 4*1*5*8**2 = 1280
3. Цифра 5 на третьем месте. Число: [1234678] [02468] [5] [02468] [01234678]
Количество чисел 7*5*1*5*8 = 1400
4. Цифра 5 на четвертом месте. Количество чисел такое же, как и в предыдущем случае, т. е. 1400.
5. Цифра 5 на пятом месте. Число [1234678] [01234678] [01234678] [02468] [5]
Количество чисел 7*8**2*5*1 = 2240.
Всего чисел 2560+1280+2*1400+2240 = 8880.
Приведём решение на языке Python.
from itertools import product
count = 0
for p in product("012345678", repeat=5):
if p.count("5") == 1 and p[0]!="0":
i = p.index('5')
if i != 0 and i != 4:
if p[i - 1] not in '137' and p[i + 1] not in '137':
count+=1
elif i == 0:
if p[1] not in '137':
count+=1
elif i == 4:
if p[3] not in '137':
count += 1
print(count)
Ответ: 8880.
Приведём решение Николая Аксенова на языке Python.
from itertools import *
count = 0
t = ['51','53', '57', '15', '35', '75']
for i in product('012345678', repeat=5):
p = ''.join(i)
if p[0] != '0' and p.count('5') == 1 and all (not i in p for i in t):
count += 1
print(count)
Приведём решение Юрия Красильникова на языке Python.
from itertools import product
d8='012345678'
zapret = [c+'5' for c in d8 if int(c)%2==1] + ['5'+c for c in d8 if int(c)%2==1]
a=[''.join(p) for p in product(d8,repeat=5) if p[0]!='0' and p.count('5')==1]
print(len([x for x in a if all([not z in x for z in zapret])]))
Приведём решение Бориса Савельева на языке Python.
k = 0
for a in '12345678':
for b in '012345678':
for c in '012345678':
for d in '012345678':
for e in '012345678':
s=a+b+c+d+e
if s.count('5')==1:
if s.count('15')==0 and s.count('35')==0 and s.count('75')==0:
if s.count('51') == 0 and s.count('53') == 0 and s.count('57') == 0:
k += 1
print(k)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'012345678'.Cartesian(5) // 9-ричная 5-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->s.CountOf('5')=1) // только одна цифра 5 поэтому [137]
.Where(s->not s.IsMatch('[137][5]'))//рядом с 5 НЕ стоят нечётные цифры
.Where(s->not s.IsMatch('[5][137]'))//рядом с 5 НЕ стоят нечётные цифры
.Count.Print;
end.
Игорь составляет пятизначные числа, используя цифры девятеричной системы счисления. Сколько различных чисел может составить Игорь, в которых ровно две
Решение. Приведём решение Галины Морозовой на языке Python.
from itertools import *
c=0
p=product('012345678', repeat=5)
for i in p:
s=''.join(i)
if s[0]!='0' and s.count('3')==2:
for j in s:
if j in '1357': s=s.replace(j,'*')
if '2*' not in s and '*2' not in s:
c+=1
print(c)
Ответ: 3352.
Приведём другое решение на языке Python.
from itertools import *
count = 0
w = ['12', '32', '52', '72', '21', '23', '25', '27']
for i in product('012345678', repeat=5):
s = ''.join(i)
if s[0] != '0' and s.count('3') == 2 and all (not i in s for i in w):
count += 1
print(count)
Приведём решение Ильи Андрианова на языке Python.
s = '012345678'
count = 0
for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
temp = a + b + c + d + e
if temp[0] != '0' or a != '0':
if temp.count('3') == 2:
if all(x not in temp for x in '12 21 23 32 52 25 72 27'.split()):
count += 1
print(count)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'012345678'.Cartesian(5) // 9-ричная 5-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->s.CountOf('3')=2) // ровно две цифры 3
.Where(s->not s.IsMatch('[1357][2]'))//рядом с 2 НЕ стоят нечётные цифры /слева
.Where(s->not s.IsMatch('[2][1357]'))//рядом с 2 НЕ стоят нечётные цифры /справа
.Count.Print;
end.
Назовём ряд из двух цифр подходящим, если выполняется любое из двух условий:
1) сумма цифр чётна и вторая цифра больше первой;
2) сумма цифр нечётна и вторая цифра меньше первой.
Назовём многозначное число подходящим, если любые две соседние цифры в его записи образуют подходящий ряд.
Примеры подходящих чисел: 26, 63, 30, 2630, 26308.
Пример неподходящего числа: 2638. Это число нельзя считать подходящим, так как соседние
Сколько существует подходящих 12-значных 9-ричных чисел?
Решение. Рассмотрим какие числа могут получаться при составлении по условиям.
Рассмотрим двузначные числа.
Первой цифрой не может быть ноль, возьмем
Если первая
Если первая
Если первая
Если первая
Если первая
Если первая
Если первая
Если первая
Если рассматривать трехзначные числа, то между второй и третьей цифрами к приведенным вариантам добавляется вариант
Таким образом, в 12-значном 9-ричном числе первую цифру можно выбрать
Всего 8 · 411 = 33554432 подходящих 12-значных 9-ричных чисел.
Ответ: 33554432.
Приведём решение на языке Python.
def f(n):
s = str(n)
if len(s) == 12:
return 1
podr = []
for i in range(9):
if (int(s[-1]) + i)%2 == 0 and i > int(s[-1]):
podr.append(int(s+str(i)))
if (int(s[-1]) + i)%2 != 0 and i < int(s[-1]):
podr.append(int(s + str(i)))
return sum(f(i) for i in podr)
print(sum(f(i) for i in range(1,9)))
Приведём решение Егора Чернецова на языке Python.
dp = [int(0 < d < 9) for d in range(9)]
for _ in range(11):
dp = [sum(dp[d] * (n > d if (d+n) % 2 == 0 else n < d) for d in range(9)) for n in range(9)]
print(sum(dp))
Приведём решение Юрия Красильникова на языке Python.
import functools
@functools.lru_cache(1000)
def kp(d,l):
if l==2: return len(dic[d])
return sum(kp(x,l-1) for x in dic[d])
dic={d:[x for x in range(9) if ((d+x)%2==0 and x > d) or ((d+x)%2==1 and x < d)] for d in range(9)}
print(sum(kp(x,12) for x in range(1,9)))
Приведём решение Сергея Донец на PascalABC.NET:
[cache]
function rec(pos, prev: integer): double :=
if ((pos = 13)) then 1.0 else
(0..8)
.Where(curr -> (pos = 1)or( (prev + curr) mod 2 = 0)and(curr > prev)or( (prev + curr) mod 2 = 1)and(curr < prev)and( (pos > 1)or(curr > 0) )
).Sum(curr -> rec((pos + 1), curr));
begin
Println( (1..8).Sum(start -> rec(2, start)) ); // 33554432
end.
Определите количество восьмизначных 15-ричных чисел, в записи которых ровно два нуля и не более четырёх цифр, для записи которых используются буквы.
Решение. Приведём аналитическое Юрия Красильникова решение.
Требуется разместить два нуля на двух из семи последних мест в восьмизначном числе (ноль не может стоять на первом месте).
Это 21 вариант (число сочетаний из 7 по 2).
Шесть оставшихся мест мы должны заполнять остальными цифрами (кроме нуля). Всего имеется 146 - 7529536 вариантов.
Из этого множества нужно исключить числа, в которых все шесть цифр с буквенными обозначениями, а также числа, где одна цифра - десятичная, а остальные пять - буквенные.
Чисел из шести цифр с буквенными обозначениями 56 = 15625.
Чисел, в которых одна цифра десятичная, а пять - буквенные, 6 · 9 · 55 = 168750.
Получаем ответ: 21 · (146-56-6 · 9 · 55) = 154248381.
Ответ можно получить с помощью следующей программы на Питоне:
import math
print(math.comb(7,2)*(14**6-5**6-6*9*5**5))
Приведём решение на языке Python.
from itertools import product
count = 0
for i in product ('01a', repeat = 8 ):
s = ''.join(i)
if s[0] != '0' and s.count('0') == 2 and s.count('a') <5:
count += 9**s.count('1') * 5**s.count('a')
print(count)
Ответ:154248381.
Приведём решение Бориса Савельева на языке Python.
from itertools import product
s = product('123456789ABCDE', repeat=6)
count = 0
for i in s:
p = ''.join(i)
if p.count('A') + p.count('B') + p.count('C') + p.count('D') + p.count('E') < 5:
count += 1
print(count * 21) # 21 способ выбрать две позиции для нулей среди 7 цифр (первым ноль быть не может).
Приведём программу Валерия Григорьева на PascalABC:
var
a1, a2 ,a3, a4, a5, a6, a7, a8: integer;
c: integer;
cn: longint;
str: string;
begin
cn := 0;
str := '0123456789xxxxx';
for a1:= 1 to 14 do
for a2:= 0 to 14 do
for a3:= 0 to 14 do
for a4:= 0 to 14 do
for a5:= 0 to 14 do
for a6:= 0 to 14 do
for a7:= 0 to 14 do
for a8:= 0 to 14 do
begin
c := 0;
if (a2 = 0) then c += 1;
if (a3 = 0) then c += 1;
if (a4 = 0) then c += 1;
if (a5 = 0) then c += 1;
if (a6 = 0) then c += 1;
if (a7 = 0) then c += 1;
if (a8 = 0) then c += 1;
if (c = 2) then
begin
c := 0;
if (a1 > 9) then c += 1;
if (a2 > 9) then c += 1;
if (a3 > 9) then c += 1;
if (a4 > 9) then c += 1;
if (a5 > 9) then c += 1;
if (a6 > 9) then c += 1;
if (a7 > 9) then c += 1;
if (a8 > 9) then c += 1;
if (c<=4) then
cn += 1;
end;
end;
writeln;
writeln;
writeln(cn);
end.
Джон составляет список всех возможных кодов, составленных из заглавных латинских букв. Сначала он выписывает в алфавитном порядке все коды, состоящие из одного символа (A, B, …, Z), затем — тоже в алфавитном порядке — коды из двух символов (AA, AB, …, AZ, BA, BB, … ZZ), далее идут трёхсимвольные коды (AAA, AAB, …, ZZZ) и так далее.
Под каким номером окажется в этом списке код FDECBA?
Решение. Приведём аналитическое Юрия Красильникова решение.
Слово FDECBA можно рассматривать как число 534210, записанное в системе счисления по основанию 26. Перед ним следуют 26 слов длины 1, 262 слов длины 2, ..., 265 слов длины 5.
Поэтому ответ можно получить с помощью следующей программы:
print(int('534210',26)+1+sum(26**p for p in range(1,6)))
Единица прибавляется потому, что слову AAAAAA соответствует число 000000 со значением 0, но нумерация слов в списке начинается с 1.
Приведём решение на языке Python.
from itertools import product
count = 1
alf = sorted('QWERTYUIOPASDFGHJKLZXCVBNM')
for n in range(1,7):
for i in product(alf,repeat = n):
if "".join(i)=="FDECBA":
print(count)
break
count += 1
Ответ: 73206121.
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
var alf:='A'..'Z';
var count := 1;
// Подсчет всех комбинаций длиной от 1 до 5 символов
for var n := 1 to 5 do
count+=alf.Cartesian(n).Count;
// Поиск среди комбинаций длиной 6 символов
alf.Cartesian(6).ForEach( ar->
begin
if ar.JoinToString() = 'FDECBA' then
begin
Print(count); // 73206121
Halt;
end;
count += 1;
end );
end.
Определите количество семеричных пятизначных чисел, которые начинаются с чётных цифр, не оканчивается цифрами 2 и 3 и содержит не менее двух цифр 1.
Решение. Приведём решение на языке Python.
from itertools import product as p
k = 0
for n in p('0123456', repeat=5):
x0, xn = n[0], n[-1]
if x0 != '0' and not int(x0)%2 and xn not in '23' and\
n.count('1') >= 2:
k += 1
print(k)
Ответ: 609.
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'0123456'.Cartesian(5) // 7-ричная 5-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->s[1] in '246') // начинаются с чётных цифр 2,4,6
.Where(s->s.Last not in '23') // не оканчивается цифрами 2,3
.Where(s->s.CountOf('1')>=2) // не менее двух цифр 1
.Count.Print;
end.
Определите количество шестеричных пятизначных чисел, в записи которых не менее двух цифр 5 и не более трёх нечетных цифр, меньших 4.
Решение. Приведём аналитическое решение Юрия Красильникова.
Если в пятизначном числе не менее двух цифр 5, то в нем никак не может быть более трех иных цифр,в частности, нечетных цифр меньше 4. Поэтому если выполнено условие «не менее двух цифр 5», то условие «не более трёх нечетных цифр, меньших 4» заведомо выполнено и поэтому излишне.
Пусть в нашем числе n пятерок, n>=2.
Если одна из пятерок стоит на первом месте, то число способов, которыми можно расставить n-1 пятерку на 4 места, есть comb(4,n-1) - число сочетаний из 4 по n-1. Остаются 5-n цифр, число способов для них - это 5(5-n). Здесь 2<=n<=5.
Если на первом месте стоит не пятерка (т. е. цифры 1, 2, 3, или 4), то число способов поставить n пятерок на 4 места - comb(4,n). Число способов выбрать первую цифру - 4, а оставшиеся 4-n - 5(4-n).
Таким образом, ответ можно найти с помощью следующей программы:
from math import comb
ans=sum(comb(4,n-1)*5**(5-n) for n in range(2,6))+sum(4*comb(4,n)*5**(4-n) for n in range(2,5))
print(ans)
Приведём решение на языке Python.
from itertools import product as p
k = 0
for n in p('012345', repeat=5):
if n[0] != '0' and n.count('5') >= 2 and n.count('1') + n.count('3')<= 3:
k += 1
print(k)
Приведём решение Юрия Красильникова на языке Python.
from itertools import product
print(len([x for x in product('012345',repeat=5) if x[0]!='0' and x.count('5')>=2]))
Ответ: 1355.
Приведём решение Юрия Красильникова на языке Python.
k=0
for a in '12345':
for b in '012345':
for c in '012345':
for d in '012345':
for e in '012345':
s=a+b+c+d+e
if s.count('5')>=2 and ((s.count('1')+s.count('3')))<=3:
k+=1
print(k)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'012345'.Cartesian(5) // 6-ричная 5-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->s.CountOf('5')>=2) //не менее двух цифр 5
.Where(s->(s.CountOf('3')+s.CountOf('1'))<=3) //не более трёх нечетных цифр, меньших 4
.Count.Print;
end.
Сколько существует натуральных чисел, запись которых в системе счисления с основанием 12 содержит не менее двух цифр, и при чтении числа слева направо каждая следующая цифра оказывается строго больше предыдущей?
Решение. Приведём решение на языке Python.
import itertools
otv = []
for i in range(2,12):
combs = [''.join(pair) for pair in itertools.combinations('123456789AB', i)]
otv.append(len(combs))
print(sum(otv))
Ответ: 2036.
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
var total := 0;
for var i := 2 to 11 do
total += ('123456789AB'.combinations(i).Count);
Write(total);
end.
Сколько существует натуральных чисел, запись которых в системе счисления с основанием 13 содержит не менее двух цифр, и при чтении числа слева направо каждая следующая цифра оказывается строго больше предыдущей?
Решение. Приведём решение на языке Python.
import itertools
otv = []
for i in range(2,14):
combs = [''.join(pair) for pair in itertools.combinations('123456789ABC', i)]
otv.append(len(combs))
print(sum(otv))
Ответ: 4083.
Приведём решение Юрия Красильникова на языке Python.
def quantity(previous, length):
return 12-previous if length==1 else sum(quantity(i,length-1) for i in range(previous+1,13))
print(sum(quantity(0,length) for length in range(2,13)))
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
var total := 0;
for var i := 2 to 12 do
total += '123456789ABC'.combinations(i).Count;
Write(total);
end.
Сколько существует десятичных четырёхзначных чисел, в которых все цифры различны и никакие две чётные или две нечётные цифры не стоят рядом?
Решение. Приведём аналитическое решение Юрия Красильникова.
Пусть Н — нечетная цифра, Ч — четная. Число должно иметь вид либо НЧНЧ, либо ЧНЧН.
Чисел вида НЧНЧ 5 · 5 · 4 · 4 = 400 (учитываем, что все цифры различны, в частности, для первой цифры имеем пять вариантов, а для третьей — лишь четыре).
Чисел вида ЧНЧН 4 · 5 · 4 · 4 = 320. (Первая цифра не может быть нулем.)
Всего чисел 400 + 320 = 720.
Приведём решение на языке Python.
from itertools import product
count = 0
for i in product('0123456789', repeat=4):
if len(set(i)) == 4 and i[0] != '0':
if all(int(a) % 2 != int(b) % 2 for a, b in zip(i, i[1:])):
count += 1
print(count)
Ответ: 720.
Приведём решение Александры Ивановой на языке Python.
from itertools import *
count = 0
for x in product('0123456789', repeat =4):
if len(set(x))==4 and x[0]!='0':
x = ''.join(x)
x=x.replace('0', '*').replace('2', '*').replace('4', '*').replace('6', '*').replace('8', '*')
x=x.replace('1', '+').replace('3', '+').replace('5', '+').replace('7', '+').replace('9', '+')
if ('++' not in x) and ('**' not in x):
count += 1
print(count)
Приведём решение Харитоненковой Варвары на языке Python.
from itertools import *
count = 0
for i in permutations('0123456789', r = 4):
s = ''.join(i)
if s[0]!="0":
s = s.replace('0','*').replace('2','*').replace('4','*').replace('6','*').replace('8','*')
s = s.replace('1','!').replace('3','!').replace('5','!').replace('7','!').replace('9','!')
if ('**' not in s) and ('!!' not in s):
count += 1
print(count)
Приведём решение Бориса Савельева на языке Python.
from itertools import permutations
s=permutations('0123456789', 4)
k=0
for i in s:
p=''.join(i)
if p[0]!='0':
if int(p[0])%2!=int(p[1])%2 and int(p[1])%2!=int(p[2])%2 and int(p[2])%2!=int(p[3])%2:
k+=1
print(k)
Приведём решение Александра Козлова на языке Python.
count = 0
for a in '2468':
for b in '13579':
for c in '02468':
for d in '13579':
if a!=c and b!=d:
count+=1
for a in '13579':
for b in '02468':
for c in '13579':
for d in '02468':
if a!=c and b!=d:
count+=1
print(count)
Приведём решение Александра Козлова на языке Python.
patterns = [('2468','13579','02468','13579'), ('13579','02468','13579','02468')]
print(sum(1 for p in patterns for a in p[0] for b in p[1] for c in p[2] for d in p[3] if a!=c and b!=d))
Приведём решение Юрия Красильникова на языке Python.
def good(s):
return len(set(s))==4 and sum([(s[i] in '13579') != (s[i+1] in '13579') for i in range(3)])==3
print(len([n for n in range(1000,10000) if good(str(n))]))
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'0123456789'.Permutations(4)//10-чная 4-значных
.Where(s->s[1] <> '0')// Первой цифрой не может быть 0
.Where(s->not s.IsMatch('[02468][02468]'))//никакие две чётные цифры не стоят рядом
.Where(s->not s.IsMatch('[13579][13579]'))//никакие две нечётные цифры не стоят рядом
.Count.Print;//720
end.
Сколько существует пятнадцатеричных четырёхзначных чисел, содержащих в своей записи ровно одну цифру 8, в которых никакие две одинаковые цифры не стоят рядом?
Решение. Приведём решение на языке Python.
from itertools import product
count = 0
for i in product('0123456789abcde', repeat=4):
if i[0] != '0':
if i[0] != i[1] and i[1] != i[2] and i[2] != i[3]:
if i.count('8') == 1:
count += 1
print(count)
Ответ: 9295.
Приведём решение Александра Козлова на языке Python.
s = '0123456789abcde'
k = 0
for x1 in s:
for x2 in s:
for x3 in s:
for x4 in s:
x = x1 + x2 + x3 +x4
if x[0] != '0' and x.count('8') == 1:
if x[0] != x[1] and x[1] != x[2] and x[2] != x[3]:
k += 1
print(k)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'0123456789abcde'.Cartesian(4) // 15-ричная 4-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->s.CountOf('8')=1) // только одна цифра 8
.Where(s->(s[1]<>s[2])and(s[2]<>s[3])and(s[3]<>s[4])) // никакие две одинаковые цифры не стоят рядом
.Count.Print;
end.
Сколько существует шестнадцатеричных четырёхзначных чисел, содержащих в своей записи ровно одну цифру 3, в которых никакие две одинаковые цифры не стоят рядом?
Решение. Приведём решение на языке Python.
from itertools import product
count = 0
for i in product('0123456789abcdef', repeat=4):
if i[0] != '0':
if i[0] != i[1] and i[1] != i[2] and i[2] != i[3]:
if i.count('3') == 1:
count += 1
print(count)
Ответ: 11 564.
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'0123456789abcdef'.Cartesian(4) // 16-ричная 4-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->s.CountOf('3')=1) // только одна цифра 3
.Where(s->(s[1]<>s[2])and(s[2]<>s[3])and(s[3]<>s[4])) // никакие две одинаковые цифры не стоят рядом
.Count.Print;
end.
Определите количество 16-ричных шестизначных чисел, в записи которых содержится не менее одной цифры 5 и ровно две цифры с числовым значением, превышающим 12, причём стоящие рядом.
Решение. Приведём решение на языке Python.
from itertools import product
count = 0
for i in product("0123456789ABCxxx", repeat = 6):
s = ''.join(i)
if s.count("5") >= 1 and s[0] != "0":
if s.count("x") == 2 and "xx" in s:
count += 1
print(count)
Ответ: 335241.
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'0123456789abcxxx'.Cartesian(6)
.Where(s->s[1] <> '0')
.Where(s->s.CountOf('5')>=1)
.Where(s->s.CountOf('x')=2)
.Where(s->s.IsMatch('[x][x]'))
.Count.Print;
end.
Определите количество 14-ричных шестизначных чисел, в записи которых содержится не менее одной цифры 4 и ровно две цифры с числовым значением, превышающим 10, причём стоящие рядом.
Решение. Приведём решение на языке Python.
from itertools import product
count = 0
for i in product("0123456789Axxx", repeat = 6):
s = ''.join(i)
if s.count("4") >= 1 and s[0] != "0":
if s.count("x") == 2 and "xx" in s:
count += 1
print(count)
Ответ: 196929.
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'0123456789axxx'.Cartesian(6)
.Where(s->s[1] <> '0')
.Where(s->s.CountOf('4')>=1)
.Where(s->s.CountOf('x')=2)
.Where(s->s.IsMatch('[x][x]'))
.Count.Print;
end.
Сколько существует различных пятизначных чисел, записанных в двенадцатеричной системе счисления, в записи которых есть только три чётные цифры, причём одинаковые и стоящие рядом?
Решение. Приведём решение на языке Python.
from itertools import product
otv = 0
for i in product('0123456789ab', repeat=5):
if i[0] != '0':
cet = [x for x in i if x in '02468a']
if len(set(cet)) == 1 and len(cet) == 3:
if cet[0]*3 in ''.join(i):
otv += 1
print(otv)
Ответ: 612.
Сколько существует различных пятизначных чисел, записанных в двенадцатеричной системе счисления, в записи которых есть только три нечётные цифры, причём одинаковые и стоящие рядом?
Решение. Приведём решение на языке Python.
from itertools import product
otv = 0
for i in product('0123456789ab', repeat=5):
if i[0] != '0':
necet = [x for x in i if x in '13579b']
if len(set(necet)) == 1 and len(necet) == 3:
if necet[0]*3 in ''.join(i):
otv += 1
print(otv)
Ответ: 576.
| № п/п | № задания | Ответ |
| 1 | 10473 | 270 |
| 2 | 58235 | 38 |
| 3 | 58237 | 35 |
| 4 | 59713 | 5616 |
| 5 | 59741 | 180 |
| 6 | 59742 | 720 |
| 7 | 59743 | 9155 |
| 8 | 59746 | 1863219 |
| 9 | 59801 | 1944 |
| 10 | 59831 | 8880 |
| 11 | 59832 | 3352 |
| 12 | 64893 | 33554432 |
| 13 | 72566 | 154248381 |
| 14 | 73863 | 73206121 |
| 15 | 76111 | 609 |
| 16 | 76223 | 1355 |
| 17 | 76676 | 2036 |
| 18 | 76705 | 4083 |
| 19 | 79721 | 720 |
| 20 | 83138 | 9295 |
| 21 | 83166 | 11564 |
| 22 | 84670 | 335241 |
| 23 | 84702 | 196929 |
| 24 | 87399 | 612 |
| 25 | 87426 | 576 |