Таймкоды: 00:00 Вступление 01:02 Номер 1 (ответ: 17) 10:06 Номер 2 Python (ответ: zyxw) 27:07 Номер 3 (ответ: 3550) 40:25 Номер 4 (ответ: 8) 44:52 Номер 5 (ответ: 694) 01:03:00 Номер 6 (ответ: 203) 01:11:10 Номер 7 (ответ: 206550) 01:19:39 Номер 8 (ответ: 58979) 01:31:31 Номер 9 (ответ: 261) 01:43:09 Номер 10 (ответ: 1) 01:48:24 Номер 11 (ответ: 2000) 01:54:29 Номер 12 (ответ: 9) 02:04:05 Номер 13 Устно (ответ: 11) 02:12:41 Номер 13 Python 02:14:56 Номер 14 (ответ: 20157588) 02:22:48 Номер 15 (ответ: 64) 02:29:16 Номер 16 (ответ: 3596910688800) 02:31:16 Номер 17 (ответ: 90 16794) 02:36:32 Номер 18 (ответ: 758 2176) 02:46:42 Номер 19-21 19)4 20)1 21)2 03:15:55 Номер 22 (ответ: 6) 03:23:57 Номер 23 (ответ: 13) 03:28:51 Номер 24 (ответ: 21) 03:37:52 Номер 25 03:50:26 Номер 26 Переборное решение (ответ: 38032 3014) 04:03:49 Номер 26 Оптимальное решение 04:20:25 Номер 27 (ответ: 21661 13385023015)
Если перефразировать 8 задание для 9ричной сс, то решение лежит на поверхности. Укажите наибольшее девятеричное число в котором содержится всего две единицы.
Задание 9 мне кажется, можно сделать проще. Во всяком случае. именно так я буду объяснять своим ученикам: сортируем с использованием функции "НАИМЕНЬШИЙ"(доп 7 столбцов, выделили цветом), затем функция "СЧЁТЕСЛИ" - сколько раз число встречается в строке, при этом в качестве источника выбрать отсортированные числа (еще 7 столбцов, выделили другим цветом). Столбец с суммой по последним 7 столбцам. Для фильтра вставляем пустую строку сверху. Далее - фильтр. Где сумма - выбрать 11, где количество - в крайнем правом столбце (где указано, сколько раз встречается максимальное число) выбрать 1.
8 номер можно так from itertools import * k=0 l=0 for x in product(sorted('КОМПЬЮТЕР'), repeat=5): s=''.join(x) k+=1 if k%2!=0 and s.count('К')==2 and s[0]!='Ь': print(k,s)
А в 17 задании, когда мы смотрим, равняются ли остатки от числа 13 мы же используем +, то есть "логичесоке или", которое в случае если оба условия верны выдаст тоже 1. А нам нужно, чтоб только одно условие было верно. Может я ошибаюсь, подскажите, пожалуйста.
@@ВладиславРемезов-ж1э не совсем понимаю зачем так делать. Но вроде должно работать. Ответ сходится?) Если вам так более понятно, то тогда решайте так!
Здравствуйте. Немного не понимаю, не могли бы подсказать, пожалуйста, почему подобное решение в лоб в 15 не проходит? Никакое значение A не подходит def f(x, a): return not( (x < 11 + 18 and 11 < x + 18 and 18 < x + 11) == ( not(max(x,5) > 68 ))) and (x < a + 5 and a < 5 + x and 5 < x + a) for a in range(1,10000): if all(f(x,a) for x in range(1,100000)): print(a)
Неправильно скобки поставили: return not(( (x < 11 + 18 and 11 < x + 18 and 18 < x + 11) == ( not(max(x,5) > 68 ))) and (x < a + 5 and a < 5 + x and 5 < x + a))
Не вижу смысла использовать какие-то огромные числа типа 10^20 для того что бы найти минимальное число, друг у нас что-то пойдет не так и это число нам испортит весь код, проще записывать все числа в список и конце вызвать min() этого списка и тогда гарантированно получим минимальное число.
Разве в 27 не стоит учитывать случай, когда число положительных сразу равно числу отрицательных, не вычитая подпоследовательностей? f = open("27-A_11567.txt") n = int(f.readline()) col = 0 s = 0 d = [0] * 10**7 d[0] = 1 for i in range(n): x = int(f.readline()) if x > 0: col += 1 else: col -= 1 if col == 0: s += 1 s += d[col] d[col] += 1 print(s)
Спасибо большое! Очень приятная девушка и толковые объяснения. Я, конечно, смотрел не все задания, но отдельная Вам благодарность за 26 и 27 задание! P. S. Обязательно ли в 27А использовать три цикла? Можно ведь и два, вроде
почему в 27 не рассматриваем случай , когда отрицательных больше, в решении учитывается только положительный баланс , хотя он может быть и отрицательным
25 задание from fnmatch import * def div(x): d = set() a = set() for i in range(1, int(x**0.5)+1): if x%i==0: d |= {i, x//i} for k in d: if k%2==0: a.add(k) return a for s in range(65000, 1000000): m = div(s) if fnmatch(str(s), '6*97*5?'): if len(m)>=4: print(s, sum(m))
from fnmatch import * k=0 for i in range(65000,10**6): if fnmatch(str(i),'6*97*5?'): a=set() for j in range(1,int(i**0.5)+1): if i%j==0: a.add(j) a.add(i//j) b=[i for i in a if i%2==0] if k==7: break if len(b)>=4: k+=1 print(i,sum(b))
Таймкоды:
00:00 Вступление
01:02 Номер 1 (ответ: 17)
10:06 Номер 2 Python (ответ: zyxw)
27:07 Номер 3 (ответ: 3550)
40:25 Номер 4 (ответ: 8)
44:52 Номер 5 (ответ: 694)
01:03:00 Номер 6 (ответ: 203)
01:11:10 Номер 7 (ответ: 206550)
01:19:39 Номер 8 (ответ: 58979)
01:31:31 Номер 9 (ответ: 261)
01:43:09 Номер 10 (ответ: 1)
01:48:24 Номер 11 (ответ: 2000)
01:54:29 Номер 12 (ответ: 9)
02:04:05 Номер 13 Устно (ответ: 11)
02:12:41 Номер 13 Python
02:14:56 Номер 14 (ответ: 20157588)
02:22:48 Номер 15 (ответ: 64)
02:29:16 Номер 16 (ответ: 3596910688800)
02:31:16 Номер 17 (ответ: 90 16794)
02:36:32 Номер 18 (ответ: 758 2176)
02:46:42 Номер 19-21 19)4 20)1 21)2
03:15:55 Номер 22 (ответ: 6)
03:23:57 Номер 23 (ответ: 13)
03:28:51 Номер 24 (ответ: 21)
03:37:52 Номер 25
03:50:26 Номер 26 Переборное решение (ответ: 38032 3014)
04:03:49 Номер 26 Оптимальное решение
04:20:25 Номер 27 (ответ: 21661 13385023015)
спасибо за столь подробное объяснение. все очень понятно, буду ждать следующих разборов
Спасибо за приятные слова😊
Спасибо, за объяснение
Если перефразировать 8 задание для 9ричной сс, то решение лежит на поверхности. Укажите наибольшее девятеричное число в котором содержится всего две единицы.
Задание 9 мне кажется, можно сделать проще. Во всяком случае. именно так я буду объяснять своим ученикам: сортируем с использованием функции "НАИМЕНЬШИЙ"(доп 7 столбцов, выделили цветом), затем функция "СЧЁТЕСЛИ" - сколько раз число встречается в строке, при этом в качестве источника выбрать отсортированные числа (еще 7 столбцов, выделили другим цветом). Столбец с суммой по последним 7 столбцам. Для фильтра вставляем пустую строку сверху. Далее - фильтр. Где сумма - выбрать 11, где количество - в крайнем правом столбце (где указано, сколько раз встречается максимальное число) выбрать 1.
Суммой в данной задаче считать можно, а в чуть другой задаче будет ошибка.
Фигня
8 номер можно так
from itertools import *
k=0
l=0
for x in product(sorted('КОМПЬЮТЕР'), repeat=5):
s=''.join(x)
k+=1
if k%2!=0 and s.count('К')==2 and s[0]!='Ь':
print(k,s)
А в 17 задании, когда мы смотрим, равняются ли остатки от числа 13 мы же используем +, то есть "логичесоке или", которое в случае если оба условия верны выдаст тоже 1. А нам нужно, чтоб только одно условие было верно. Может я ошибаюсь, подскажите, пожалуйста.
я проверила другим способом, ответ получается тот же, но вопрос все равно остается открытым
+ это обычное сложение чисел.
Истина + истина + ложь = 2
спасибо огромное за ваш труд!
В 27 можно накапливать сумму и проверять, если bal==0, тогда не придется писать k[0]=1. Как по мне, так более понятно
не понимаем вашу идею, покажите код целиком, пожалуйста
@@pro100ege68
f = open('27B.txt')
n = int(f.readline())
a=[int(x) for x in f]
kk = [0]*n
k = 0
count=0
for i in range(n):
x = a[i]
if x>0:k+=1
if x
@@ВладиславРемезов-ж1э не совсем понимаю зачем так делать. Но вроде должно работать. Ответ сходится?) Если вам так более понятно, то тогда решайте так!
Здравствуйте. Немного не понимаю, не могли бы подсказать, пожалуйста, почему подобное решение в лоб в 15 не проходит? Никакое значение A не подходит
def f(x, a):
return not( (x < 11 + 18 and 11 < x + 18 and 18 < x + 11) == ( not(max(x,5) > 68 ))) and (x < a + 5 and a < 5 + x and 5 < x + a)
for a in range(1,10000):
if all(f(x,a) for x in range(1,100000)):
print(a)
Неправильно скобки поставили: return not(( (x < 11 + 18 and 11 < x + 18 and 18 < x + 11) == ( not(max(x,5) > 68 ))) and (x < a + 5 and a < 5 + x and 5 < x + a))
Не вижу смысла использовать какие-то огромные числа типа 10^20 для того что бы найти минимальное число, друг у нас что-то пойдет не так и это число нам испортит весь код, проще записывать все числа в список и конце вызвать min() этого списка и тогда гарантированно получим минимальное число.
Хороший способ!
затратнее по ресурсам будет
@@radma1233 не значительно, вероятность достичь оом крайне мала для таких задач. .
Разве в 27 не стоит учитывать случай, когда число положительных сразу равно числу отрицательных, не вычитая подпоследовательностей? f = open("27-A_11567.txt")
n = int(f.readline())
col = 0
s = 0
d = [0] * 10**7
d[0] = 1
for i in range(n):
x = int(f.readline())
if x > 0:
col += 1
else:
col -= 1
if col == 0: s += 1
s += d[col]
d[col] += 1
print(s)
Спасибо большое! Очень приятная девушка и толковые объяснения. Я, конечно, смотрел не все задания, но отдельная Вам благодарность за 26 и 27 задание!
P. S. Обязательно ли в 27А использовать три цикла? Можно ведь и два, вроде
Спасибо за приятные слова!
Можно обойтись двумя!
Насколько часто будут выходить пробники?
Планируем в последнюю пятницу каждого месяца.
@@pro100ege68 Отлично, буду ждать, спасибо за ваш труд!
в 15 номере если а перебирать до 10 тысяч , то там появляются ещё значения
вероятно вы взяли маленький диапазон x.
В 5 задании выдаёт ошибку, name to_ is not defined, где ошибка? Делала всё как и вы, хотя у меня в первой строчке to_6(n) не выделился синим цветом
Может забыли написать def?
Или забыли цифру 6
почему в 27 не рассматриваем случай , когда отрицательных больше, в решении учитывается только положительный баланс , хотя он может быть и отрицательным
Будут обращения к отрицательным индексам списка. Все хорошо.
понял , спасибо@@pro100ege68
Здравствуйте. По 15 заданию, х-любое, а если х=70
то что тогда?)
25 задание
from fnmatch import *
def div(x):
d = set()
a = set()
for i in range(1, int(x**0.5)+1):
if x%i==0:
d |= {i, x//i}
for k in d:
if k%2==0:
a.add(k)
return a
for s in range(65000, 1000000):
m = div(s)
if fnmatch(str(s), '6*97*5?'):
if len(m)>=4:
print(s, sum(m))
зачем так усложнять, на егэ не до этого
from fnmatch import *
k=0
for i in range(65000,10**6):
if fnmatch(str(i),'6*97*5?'):
a=set()
for j in range(1,int(i**0.5)+1):
if i%j==0:
a.add(j)
a.add(i//j)
b=[i for i in a if i%2==0]
if k==7:
break
if len(b)>=4:
k+=1
print(i,sum(b))