Подготовка к ЕГЭ, ОГЭ.

Махмутова Зухра Кальмухаметовна

Предварительный просмотр:


Подписи к слайдам:

Слайд 1

№14

Слайд 2

212. Значение арифметического выражения: 36 17 + 6 48 – 17 записали в системе счисления с основанием 6. Сколько цифр «0» в этой записи? # задача 14.212 x = 36**17+6**48-17 print (x) count0 = 0 s = '' while x: s += str (x % 6) #print (s) if x % 6 == 0: count0 += 1 #print (x) x //= 6 print('s = ',s, ' Ответ :', count0 ) # Ответ : 14

Слайд 3

213. Значение арифметического выражения: 36 27 + 6 18 – 19 записали в системе счисления с основанием 6. Сколько цифр «0» в этой записи ? # задача 14.21 3 x = 36** 2 7+6** 1 8-1 9 print (x) count0 = 0 s = '' while x: s += str (x % 6) #print (s) if x % 6 == 0: count0 += 1 #print (x) x //= 6 print('s = ',s, ' Ответ :', count0 )

Слайд 4

221. ( Е.А. Мирончик ) Выражение 2 5  3 25 записано в троичной системе счисления. Определите, сколько в этой записи цифр 0, 1 и 2. x = 2**5*3**25 print (x) count0 = 0 count1 = 0 count2 = 0 s = '' while x: s += str (x % 3) #print (s) if x % 3 == 0: count0 += 1 if x % 3 == 1: count1 += 1 if x % 3 == 2: count2 += 1 #print (x) x //= 3 print( ' Ответ:','0 = ', count0,' 1 = ',count1,' 2 = ',count2 )

Слайд 5

222. ( Е.А. Мирончик ) Выражение 4 3  3 19 записано в троичной системе счисления. Определите, сколько в этой записи цифр 0, 1 и 2 . x = 4**3*3**19 count0 = 0 count1 = 0 count2 = 0 while x: if x % 3 == 0: count0 += 1 elif x % 3 == 1: count1 += 1 else: count2 += 1 x //= 3 print( ' Ответ : ', '"0" = ',count0,',', '"1" = ',count1,',', '"2" = ',count2 ) # Ответ : "0" = 20 , "1" = 2 , "2" = 1

Слайд 6

229. (Д. Ф. Муфаззалов ) Значение выражения (66+6 2019 )  6 2019 +66+6 6 записали в системе счисления с основанием 6. Укажите сумму цифр этой записи . # Автор: А. Наймушин # 14.229 x = (66+6**2019)* (6**2019)+66+6**6 s = '' #print(x) sum = 0 while x: s += str (x % 6) sum = sum + x % 6 x = x // 6 print( " Сумма цифр числа равна: ", sum) ''' Rez = 14 '''

Слайд 7

238. Значение выражения (512 78 - 512 60 )∙(512 5 + 64 5 ) записали в системе счисления с основанием 8. Сколько цифр 7 содержится в этой записи? # Автор : А. Наймушин # задача 14.238 x = (512**78 - 512**60)*(512**5+64**5) #print (x) count7 = 0 while x: #print (s) if x % 8 == 7: count7 += 1 #print (x) x //= 8 print( ' Ответ :', count7 ) # Ответ : 53 '''

Слайд 8

239. Значение выражения (729 41 – 81 16 )∙(729 15 + 9 5 ) записали в системе счисления с основанием 9. Сколько цифр 8 содержится в этой записи? # Автор: А. Наймушин # задача 14.239 x = (729**41-81**16)*(729**15+9**5) #print (x) count8 = 0 while x: if x % 9 == 8: count8 += 1 #print (x) x //= 9 print( ' Ответ:', count8 ) # Ответ: 90

Слайд 9

240. Значение выражения (729 41 – 81 16 )∙(729 15 + 9 5 ) записали в системе счисления с основанием 9. Сколько цифр 0 содержится в этой записи? # Автор : А. Наймушин # задача 14.240 x = (729**41-81**16)*(729**15+9**5) #print (x) count0 = 0 s = '' while x: s += str (x % 9) #print (s) if x % 9 == 0: count0 += 1 #print (x) x //= 9 print( ' Ответ :', count0 ) # Ответ : 77

Слайд 10

242. Дано выражение: x = 3  16 a + 5  4 b – 8 c – 2 d + 15, где a = 46 8 , b = 40 16 , c = 47 8 – 1B 16 , d = 110101 2 + 13 8 . Найдите количество максимальных цифр в шестнадцатеричной записи числа x . # ЕГЭ Задача № 14_242. Михлин Б.С. a= int ('0o46',8) b= int ('0x40',16) c= int ('0o47',8)- int ('0x1B',16) d= int ('0b110101',2)+ int ('0o13',8) print( a,b,c,d ) x=3*16**a+5*4**b-8**c-2**d+15 x16=hex(x) print(x) print(x16) print(' Ответ:', x16.count('f')) ''' 38 64 12 64 17126974013883353177391748931820234653004988431 0x3000004fffffffffffffffefffffff00000000f Ответ: 23 ''

Слайд 11

243. ( Б.С. Михлин ) Дано выражение: x = 16 a + 4 b – 8 c – 2 d + 31, где a = 25 8 , b = 24 16 , c = 43 8 – 1B 16 , d = 110101 2 + 13 8 . Найдите суммарное количество максимальных и минимальных цифр в шестнадцатеричной записи числа x . # ЕГЭ Задача № 14_243. Михлин Б.С. a= int ('0o25',8) b= int ('0x24',16) c= int ('0o43',8)- int ('0x1B',16) d= int ('0b110101',2)+ int ('0o13',8) print( a,b,c,d ) x=16**a+4**b-8**c-2**d+31 x16=hex(x) print(x) print(x16) print(' Ответ:', x16.count('f')+x16.count('0')-1) ''' 21 36 8 64 19347517033572862714183711 0x1000feffffffffff00001f Ответ: 19

Слайд 12

255. ( Б.С. Михлин ) Число 1234 записали в системах счисления с основаниями от 2 до 10 включительно. При каком основании сумма цифр в записи этого числа будет максимальной? Если таких оснований несколько, то укажите максимальное из них. В десятичной системе счисления число n = 1234. Его переводят в другие системы счисления с основанием x. При каком основании x от 2 до 10 (включительно) сумма цифр числа n (цифры суммируются в десятичной системе) будет максимальной. Если таких оснований несколько, то укажите максимальное основание. sma =0 # максимальная сумма цифр числа n for x in range (2,11): n=1234 s=0 # сумма цифр числа n while n: s+=n % x n//=x if s>= sma : # не строгое неравенство sma =s xma =x # основание максимальной суммы # print ( x,s ) # отладочная print ( xma , sma ) # Ответ: 6

Слайд 13

256. В десятичной системе счисления число n = 2345. Его переводят в другие системы счисления с основанием x. При каком основании x от 2 до 10 (включительно) сумма цифр числа n (цифры суммируются в десятичной системе) будет максимальной. Если таких оснований несколько, то укажите минимальное основание. Ответ: 7 17 ''' sma =0 # максимальная сумма цифр числа n for x in range (2,11): n=2345 s=0 # сумма цифр числа n while n: s+=n % x n//=x if s> sma : # строгое неравенство sma =s xma =x # основание максимальной суммы # print ( x,s ) # отладочная print ( xma,sma ) # Ответ 7


Предварительный просмотр:


Подписи к слайдам:

Слайд 1

16

Слайд 6

https://kpolyakov.spb.ru/school/ege.htm ( С.С. Поляков ) Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавить 1 2. Прибавить 5 3. Умножить на 3 Сколько существует программ минимальной длины, в результате выполнения которых при исходном числе 1 результатом является число 111? ( С.С. Поляков ) Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавить 1 2. Прибавить 5 3. Умножить на 3 Сколько разных чисел может быть получено из числа 1 с помощью программ, состоящих из 4 команд? ( С.С. Поляков ) Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавить 1 2. Прибавить 5 3. Умножить на 3 Сколько разных чисел может быть получено из числа 1 с помощью программ, состоящих из 7 команд? ( С.С. Поляков ) Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавить 1 2. Прибавить 2 3. Умножить на 2 Сколько разных чисел на отрезке [34, 59] может быть получено из числа 1 с помощью программ, состоящих из 6 команд?


Предварительный просмотр:


Подписи к слайдам:

Слайд 1

#17

Слайд 2

Python может с относительной легкостью обрабатывать различные форматы файлов : f= open (‘test.txt’) — открываем файл и назначаем его переменной f a=[ int (i) for i in f] -заполняем массив а целыми числами из последовательности f f.close () — закрываем переменную, деактивирует соединение между файлом и программой. k=0 — для подсчета соответствующих пар нам понадобиться переменная, обнуляем её. mx =-10000 — максимальную сумму элементов сделаем самым минимальным for i in range ( len (a)-1): -начинаем последовательный перебор, следует перебирать с первого до ПРЕДПОСЛЕДНЕГО или со второго до ПОСЛЕДНЕГО. ВАЖНО НЕ ДОПУСТИТЬ ВЫХОДА ЗА ПРЕДЕЛЫ МАССИВА! if a[i]%3==0 or a[i+1]%3==0: — по условию необходимо, что бы хотя бы одно число было кратно 3, используем остаток от деления (%) k+=1 — если условие выполняется, включается подсчет пар mx = max ( mx,a [i]+a[i+1]) — — если условие выполняется ищем максимальную сумму таких пар print ( k,mx ) — выводим результат

Слайд 3

В файле 17-демо-3.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от −10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности , в которых хотя бы одно число делится на 3, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Например , для последовательности из пяти элементов: 6; 2; 9; –3; 6 — ответ: 4 11. Решение: Для выполнения этого задания необходимо : Cкачать файл, создать папку и перенести его в эту папку; Создать файл для программы и сохранить его тоже в эту папку; Создать текстовый файл (. txt )для того что бы протестировать программу в правильности решения; Прочитать внимательно задание.

Слайд 5

В файле 17-1.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от -10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности, в которых хотя бы одно число делится на 7, а другое при этом не делится на 17. Затем - минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Например , для последовательности -45; 14; 22; -21; 34 ответом будет пара чисел: 3 и -31. f = open ('17-1.txt') n=0 m=20000 a = [ int (x) for x in f.readlines ()] for i in range( len (a)-1): if (a[ i ]%7==0 and (a[ i ]%17!=0)) or (a[i+1]%7==0 and abs(a[i+1]%17!=0)): n+=1 m=min( m,a [ i ],a[i+1]) print ( n,m )

Слайд 7

( В. Шубинкин ) В файле 17-1.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от -10 000 до 10 000 включительно . Определите и запишите в ответе сначала количество пар элементов последовательности, в которых ровно одно число делится на 9, а другое при этом заканчивается на 3 в восьмеричной системе счисления. Затем - максимальное число в паре среди всех таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Например , для последовательности 307; 36; 45; -27; -11; -6; 2; 16 ответом будет пара чисел: 2 и 307.

Слайд 8

( А. Кабанов ) В файле 17-3.txt содержится последовательность целых чисел . Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности, сумма которых кратна 3 и не кратна 6, а произведение оканчивается на 8, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности . f = open("17-3.txt") a = [ int ( i ) for i in f] f.close c = 0 mx = -1000000 for i in range( len (a)-1): if ((a + a[i+1])% 3 == 0) and ((a + a[i+1]) % 6 != 0) and (abs(a[ i ]*a[i+1 ]) % 10 == 8): c += 1 if a + a[i+1] > mx: mx = a + a[i+1] print( c,mx )

Слайд 11

(№ 4423) (П. Финкель ) В файле 17-204.txt содержится последовательность целых чисел, которые принимают значения от -10000 до 10000 включительно. Тройка идущих подряд чисел последовательности называется уникальной , если только второе из них является положительным числом, заканчивающимся на 9. Определите количество уникальных троек чисел, а затем – максимальную из всех сумм таких троек. f = open ('17-204.txt') a=[ int ( i )for i in f] def f(x): return x>0 and x%10==9 m=-10000 n=0 for i in range(1,len(a)-1): if (not f(a[i-1]) and f(a[ i ]) and (not f(a[i+1]))): n+=1 m=max( m,a [i-1]+a[ i ]+a[i+1]) print( n,m )

Слайд 12

В файле 17-202.txt содержится последовательность целых чисел, которые принимают значения от -10000 до 10000 включительно. Тройка идущих подряд чисел последовательности называется уникальной , если только второе из них является положительным трёхзначным числом, заканчивающимся на 12. Определите количество уникальных троек чисел, а затем – максимальную из всех сумм таких троек . f = open ('17-202.txt') a=[ int ( i )for i in f] def f(x): return x>0 and 100

Слайд 13

f = open ('17.txt') n=0 maxim =-10000 a = [ int (x) for x in f.readlines ()] kch =0 sch =0 for i in range ( len (a)): if a[i] %2==0: kch +=1 sch +=a[i] sr = sch / kch for i in range ( len (a)-1): if (a[ i]%3==0 or a[ i+1]%3==0) and (a[i]< sr or (a[i+1]< sr )): n+=1 maxim = max ( maxim,a [ i]+a[i+1]) print ( n,maxim )

Слайд 14

197. (Л . Шастин ) В файле 17-10.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 10000 включительно. Определите сначала количество пар, сумма элементов в которых трёхзначна , а цифра в разряде единиц этой суммы больше цифры в разряде десятков , а затем минимальную из сумм, удовлетворяющих описанному выше условию. Под парой чисел подразумевается два идущих подряд элемента последовательности. k, min_s = 0, float (' inf ') #Объявляем переменные, отвечающие за количество и минимальную сумму, их в процессе будем изменять nums = list ( map ( int , open ('17-10.txt'))) #Образуем список из целочисленных элементов в открытом файле 17-10.txt for num in range ( len ( nums )-1): #Начинаем перебор элементов до -1 от длины массива, дабы не выйти за границы (ведь будем проверять элемент от +1) tek_s = nums [ num ] + nums [num+1] #Создаем сумму из текущих пар чисел if ( tek_s > 99 and tek_s < 1000 and tek_s%10 > (( tek_s )//10)%10): #Проверяем, чтобы эта сумма была трёхзначна , а цифра в разряде её единиц была больше цифры в разряде десятков k += 1 #Наращиваем k, если условие выполнилось if tek_s < min_s : min_s = tek_s #Если условие выполнилось, проверяем, не меньше ли текущая сумма ранее записанной минимальной суммы, если меньше - перезаписываем print (k, min_s ) #Выведем количество пар, удовлетворяющих условию, и минимальную из их #Ответ: 227 169

Слайд 16

193. ( П . Волгин ) В файле 17-8.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 1000 включительно. Определите сначала количество пар элементов последовательности, в которых сумма цифр хотя бы одного из чисел в двоичной записи больше 5 и нечетна, а затем максимальную из сумм элементов таких пар. Под парой подразумевается два идущих подряд элемента последовательности.

Слайд 19

Статград 08.02.2022

Слайд 20

s=open('17.txt') a=[ int ( i ) for i in s] # print(a) k=0 s=0 for i in range( len (a)): if a[ i ]%2!=0: k+=1 s+=a[ i ] sr =s/k k1=0 m=0 for i in range(0,len(a)-1): if (a[ i ]%5==0 and a[i+1]< sr ) or (a[i+1]%3==0 and a[ i ]< sr ): k1+=1 m=max((a[ i ]+a[i+1]),m) print(k1,m)

Слайд 21

f = open ('17.txt') a=[ int ( i )for i in f] def f(x): s=0 while x>0: s=s+x%10 x=x//10 return s ma=-1 k=0 for i in range( len (a)): if f(a[ i ]) %3==0: k=k+1 ma=max( ma,a [ i ]) print( k,ma )

Слайд 22

f=open('17.txt') a=[ int ( i ) for i in f] k=0 t=[] m=0 for i in range ( len (a)): b= str (hex(a[ i ]))[-1] c= str (hex(a[ i ]))[-2:] if b=='9' and c!="A9": k=k+1 t.append (a[ i ]) m=max( m,a [ i ]) print ( k,m )

Слайд 23

f= open('17.txt') a = [ int (line) for line in f] b = [max(a[ i : i + 3]) for i in range( len (a) - 2) if (a[ i ] % 16 == 0 and a[ i + 1] % 16 == 0) \ or (a[ i ] % 16 == 0 and a[ i + 2] % 16 == 0) or (a[ i + 1] % 16 == 0 and a[ i + 2] % 16 == 0)] print( len (b), sum(b)) 188. В файле 17-7.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 200 включительно. Определите сначала количество троек элементов последовательности, в которых хотя бы 2 числа из тройки в шестнадцатеричной системе счисления в нулевом разряде имеют 0, а затем сумму максимальных чисел из таких троек. Под тройкой подразумевается три идущих подряд элемента последовательности. f=open('17.txt') a=[ int ( i ) for i in f] k,s1=0, 0 for i in range (2,len(a)): troyka = [a[i-2],a[i-1],a[ i ]] if (a[i-2]%16==0 and a[i-1]%16==0 ) or ( a[i-1]%16==0 and a[ i ]%16==0) or ( a[ i ]%16==0 and a[i-2]%16==0): k+=1 s1=s1+max( troyka ) print(k,s1)

Слайд 24

f=open('17-11.txt') data=[ int ( i ) for i in f] def s(n): b=bin(n)[2:] return b.count ('1')==2 and b.count ('0')>=1 k=0 summ =0 for i in range (2,len(data)): tri=[s(data[i-2]),s(data[i-1]),s(data[ i ])] if tri.count (True)>=2: k+=1 summ = summ+max (data[i-2],data[i-1],data[ i ]) print( k,summ ) (№ 4361) (П. Волгин) В файле 17-9.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 1100 включительно. Определите сначала количество троек элементов последовательности, в которых хотя бы два числа в двоичной системе счисления имеют ровно две единицы и эти же два числа в двоичной системе счисления имеют как минимум один ноль, а затем сумму максимальных чисел из каждой тройки. Под тройкой подразумевается три идущих подряд элемента последовательности.


Предварительный просмотр:


Подписи к слайдам:

Слайд 1

24

Слайд 2

Функция split сканирует всю строку и разделяет ее в случае нахождения разделителя. В строке должен быть как минимум один разделитель. Им может выступать в том числе и символ пробела. Пробел — разделитель по умолчанию. Если параметр на задать, то разделение будет выполнено именно по символу пробела.

Слайд 3

Текстовый файл 24.txt состоит не более чем из 10 6 символов X, Y и Z . Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны. with open( "24.txt", "r" ) as F: s = F.readline () maxLen , curLen = 1, 1 for i in range(1, len (s)): if s[ i ] != s[i-1]: curLen += 1 if curLen > maxLen : maxLen = curLen else: curLen = 1 print( maxLen ) Ответ: 35.

Слайд 4

В текстовом файле k7-0.txt находится цепочка из символов латинского алфавита A , B , C . Найдите длину самой длинной подцепочки, состоящей из символов C . with open("k7-0.txt") as F: s = F.readline () # считали строку Max = 0 # макс длина цепочки из "С" Len_C = 0 # начальная длина цепочки из "С" for c in s: if c == 'C': Len_C += 1 # появилась еще буква "С" if Len_C > Max: # перезаписали длину Max = Len_C else: Len_C = 0 # при другой букве сбрасываем счетчик print(Max) with open("k7-0.txt") as Fin: s = Fin.readline () c = 'C' while c in s: # ищем CC, потом CCC и т.д c += 'C' print( len (c)-1 ) # минус 1, чтобы убрать лишнюю (последнюю добавленную С)

Слайд 5

21 . В текстовом файле k7a-1.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите длину самой длинной подцепочки, состоящей из символов A, B или C (в произвольном порядке) . with open("k7a-1.txt") as F: s = F.readline () # считали строку k = 0 # начальная длина цепочки из " A,B, С" Max = 0 # макс длина цепочки из " A,B, С" for c in s: if c in 'ABC': k += 1 if k > Max: Max = k # перезаписали Макс длину else: k = 0 # другая буква - сбрасываем счетчик print(Max)

Слайд 6

with open("k7c-1.txt") as Fin: s = Fin.readline () k = 0 c1 = 'BCD'# строка проверки первого символа c2 = 'BDE'# строка проверки второго символа c3 = 'BCE'# строка проверки третьего символа for i in range( len (s)-2): if s[ i ] in c1 and s[i+1] in c2 and s[i+2] in c3 \ and s[ i ]!=s[i+1] and s[i+1]!=s[i+2]: # проверка повтора символов k += 1 print(k) 33. В текстовом файле k7c-1.txt находится цепочка из символов латинского алфавита A , B , C , D , E . Найдите количество цепочек длины 3, удовлетворяющих следующим условиям: 1-й символ – один из символов B , C или D ; 2-й символ – один из символов B , D , E , который не совпадает с первым; 3-й символ – один из символов B , C , E , который не совпадает со вторым.

Слайд 7

34. В текстовом файле k7c-2.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F. Найдите количество цепочек длины 3, удовлетворяющих следующим условиям: 1-й символ – один из A, C, E; 2-й символ – один из A, D, F, который не совпадает с первым; 3-й символ – один из A, B, F, который не совпадает со вторым. with open("k7c-2.txt") as Fin: s = Fin.readline () k = 0 c1 = 'ACE'# строка проверки первого символа c2 = 'ADF'# строка проверки второго символа c3 = 'ABF'# строка проверки третьего символа for i in range( len (s)-2): if s[ i ] in c1 and s[i+1] in c2 and s[i+2] in c3 \ and s[ i ]!=s[i+1] and s[i+1]!=s[i+2]: # проверка повтора символов k += 1 print(k)

Слайд 8

52. В текстовом файле k8-0.txt находится цепочка из символов, в которую могут входить заглавные буквы латинского алфавита A … Z и десятичные цифры. Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Если в файл несколько цепочек одинаковой длины, нужно взять первую из них. Выведите сначала символ, из которого строится эта подцепочка, а затем через пробел – длину этой подцепочки. # просмотр с индекса 0 по len (s)-1 with open("k8-0.txt") as F: s = F.readline () Max = 1 # макс длина цепочки одинаковых символов k = 1 # длина текущей цепочки одинаковых символов c = s[0] # символ, из которого строится самая длинная подцепочка for i in range(1, len (s)): if s[ i ] == s[i-1]: k += 1 if k > Max: Max = k c = s[ i ] # запомнили новый символ else: k = 1 # появилась новая цепочка print(c, Max) два способа просмотра символов строки: - с индекса 0 по len (s)-1; - с индекса 1 по len (s); """

Слайд 9

71. В текстовом файле k8-100.txt находится цепочка из символов, в которую могут входить заглавные буквы латинского алфавита A … Z и десятичные цифры. Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Если в файле несколько подходящих цепочек одинаковой длины, нужно взять первую из них. Выведите сначала символ, из которого строится эта подцепочка , а затем через пробел – длину этой подцепочки. with open( "k8-100.txt" ) as F: s = F.readline () Max = 0 # макс длина цепочки одинаковых символов k = 1 # длина текущей цепочки одинаковых символов c = s[0] # символ, из которого строится самая длинная подцепочка for i in range( len (s)-1): if s[ i ] == s[i+1]: k += 1 if k > Max: Max = k c = s[ i ] # запомнили новый символ else: k = 1 # появилась новая цепочка print(c, Max)

Слайд 10

173(Е . Джобс) Текстовый файл 24-173.txt состоит не более чем из 10 6 символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Найдите максимальную длину подстроки, в которой ни одна тройка символов не записана два раза подряд. Например, в искомой подстроке не может быть фрагмента ABCABC. with open("24-173.txt") as F: s = F.readline ().strip() Lmax = 5 L = 5 for i in range( len (s)-5): #print( s[ i ], state ) if s[i:i+3] != s[i+3:i+6]: L += 1 Lmax = max( L, Lmax ) else: L = 5 print( Lmax )

Слайд 11

(№ 4139) Текстовый файл 24-169.txt состоит не более чем из 10 6 символов X, Y и Z. Определите максимальную длину цепочки символов, состоящей из повторяющихся фрагментов XYZ. Цепочка должна начинаться с символа X и заканчиваться символом Z . Например, для строки ZZZXYZXYZXZZZ длина цепочки равна 6: XYZ+XYZ. with open("24-169.txt") as F: s = F.readline ().strip() #s = 'ZZZXYZXYZXZZZXYZX' target = 'XYZ' Lmax = 0 L = 0 state = 0 # 'X' for i in range( len (s)): #print( s[ i ], state ) if s[ i ] == target[state]: L += 1 state = (state + 1) % 3 if state == 0: Lmax = max( L, Lmax ) else: L = 0 state = 0 #print( L, Lmax , state ) print( Lmax )

Слайд 12

(№ 4105) (Е. Джобс) Текстовый файл 24-168.txt состоит не более чем из 10 6 символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Определите наибольшую длину последовательности из трех различных символов, расположенных в порядке неубывания . Например, для строки AABBAABBCCDDDEFFGF искомая последовательность – BBCCDDD, её длина – 7. F= open("24-168.txt") s = F.readline () #s = 'AABBAABBCCDDDEFFGF' letters = s[0] counts = [1] for i in range(1,len(s)): if s[ i ] == s[i-1]: counts[-1] += 1 else: letters += s[ i ] counts.append ( 1 ) #print( letters, counts ) Lmax = 0 for i in range(2,len(letters)): if letters[i-2] < letters[i-1] < letters[ i ]: L = sum(counts[i-2:i+1]) Lmax = max( L, Lmax ) print( Lmax )

Слайд 13

ABC = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' with open("24-164.txt") as F: data = F.readlines () maxK = 0 for s in data: k, currK = 1, 1 for i in range(1,len(s)): if s[ i ] == s[i-1]: currK += 1 k = max(k, currK ) else: currK = 1 if k > maxK : maxK = k mi, letterMin = 10**10, '' for letter in ABC: cnt = s.count (letter) if cnt > 0 and cnt <= mi: mi, letterMin = cnt , letter print( letterMin , sum( s.count ( letterMin ) for s in data) )

Слайд 14

39.( Б.С . Михлин ) В текстовом файле k7-m1.txt находится цепочка из прописных (заглавных) символов латинского алфавита A, B, C. Найдите длину самой короткой подцепочки, состоящей из символов C ( C-подцепочки). В ответе через пробел укажите: длину найденной подцепочки (если C-подцепочек нет, то 0), количество C-подцепочек и длину исходной цепочки. 40. ( Б.С . Михлин ) В текстовом файле k7-m2.txt находится цепочка из прописных (заглавных) символов латинского алфавита A, B, C. Найдите длину самой длинной подцепочки, состоящей из символов C ( C-подцепочки). В ответе через пробел укажите: длину найденной подцепочки (если C-подцепочек нет, то 0), количество C-подцепочек и длину исходной цепочки. 41. ( Б.С . Михлин ) В текстовом файле k7-m3.txt находится цепочка из прописных (заглавных) символов латинского алфавита A, B, C. Найдите все подцепочки, состоящие из символов C (C-подцепочки) длиной не более четырех. В ответе через пробел укажите: порядковый номер найденной подцепочки (начиная с единицы) при проходе по исходной цепочке слева направо, длину подцепочки и саму подцепочку, заменив в ней, начиная со второго символа «С», большие «С» на «с» строчные (маленькие). Гарантируется , что в исходной цепочке есть C-подцепочки. 42. ( Б.С . Михлин ) В текстовом файле k7-m4.txt находится цепочка из прописных (заглавных) символов латинского алфавита A, B, C. Найдите все подцепочки, состоящие из символов C (C-подцепочки) длиной не менее шести. В ответе через пробел укажите: порядковый номер найденной подцепочки (начиная с единицы) при проходе по исходной цепочке СПРАВА НАЛЕВО, ее длину и саму подцепочку, заменив в ней все символы «С» слева от правого символа «С» на «с» строчное (маленькое). Гарантируется , что в исходной цепочке есть C-подцепочки.

Слайд 20

( Б.С. Михлин ) В текстовом файле k7-m21.txt находится цепочка из прописных (заглавных) символов латинского алфавита A, B, C, D, E, F. Найдите количество подцепочек из тр ёх различных символов, в которых символы идут в алфавитном порядке, и индекс первой буквы последней найденной подцепочки (первый символ исходной цепочки имеет индекс 0). Например, у цепочки ABCDF таких подцепочек три: ABC, BCD и CDF, а индекс первой буквы последней найденной подцепочки (CDF) два и, следовательно, ответ: 3 2.


Предварительный просмотр:


Подписи к слайдам:

Слайд 1

Задачи на делимость №25

Слайд 6

2. Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [190201; 190230], числа, имеющие ровно 4 различных делителя. Выведите эти четыре делителя для каждого найденного числа в порядке убывания.

Слайд 9

3. Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [190201; 190280] , числа, имеющие ровно 4 различных ЧЁТНЫХ делителя . Выведите эти четыре делителя для каждого найденного числа в порядке убывания.

Слайд 11

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [394441; 394505], числа, имеющие максимальное количество различных делителей. Если таких чисел несколько, то найдите минимальное из них. Выведите количество делителей найденного числа и два наибольших делителя в порядке убывания.

Слайд 13

Простые числа. Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [3532000; 3532160], простые числа . Выведите все найденные простые числа в порядке убывания, слева от каждого числа выведите его номер по порядку.

Слайд 15

Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от -10 000 до 10 000 включительно. Опишите алгоритм, позволяющий найти и вывести количество пар элементов массива , в которых сумма элементов делится на 2 , но не делится на 4 . В данной задаче под парой подразумевается два подряд идущих элемента массива.

Слайд 18

Найдите все натуральные числа, принадлежащие отрезку [77 777 777; 88 888 888], у которых ровно пять различных нечётных делителей (количество чётных делителей может быть любым). В ответе перечислите найденные числа, справа от каждого числа запишите его наименьший нечётный делитель, не равный 1.

Слайд 19

Известно , что любое число единственным образом (с точностью до порядка сомножителей) представимо в виде произведения простых чисел: n = p 1 k 1 p 2 k 2 … p m km . Здесь p i ( i =1, ... m ) – различные простые делители, а k i ( i =1, ..., m ) – их кратности (натуральные числа). Все делители числа (кроме 1) можно получить, взяв произведения всевозможных комбинаций простых множителей. Например, 18 = 2·3 2 , поэтому делители числа 18 – это 1 и 2, 3, 2·3=6, 3·3=9, 2·3 2 =18. Рассмотрим случай, когда в разложение числа на простые множители входит ровно два простых нечётных числа каждое в первой степени: n = 2 k p 1 p 2 . Тогда число n делится на 1, p 1 , p 2 и произведение p 1 p 2 , т.е. имеет 4 нечётных делителя. Такой случай нам не подходит. Попробуем взять одно из простых чисел во второй степени: n = 2 k p 1 2 p 2 . Тогда нечётными делителями числа n будут: 1, p 1 , p 2 , p 1 2 , p 1 p 2 , p 1 2 p 2 . Это уже 6 делителей. Очевидно, что при увеличении количества нечётных простых делителей мы также получим больше 5 нечётных делителей исходного числа. Сделаем ключевой для решения задачи вывод: если число имеет ровно 5 нечётных делителей, в его разложение на простые множители может входить только 1 нечётное простое число. Тогда этими делителями будут 1, p, p 2 , p 3 , p 4 , а само число имеет вид n = 2 k p 4 , где k – натуральное число или ноль, p – нечётное простое число. Задача свелась к тому, чтобы перебрать числа из отрезка и, убрав из их разложения на простые множители 2 k , определить является ли то что осталось четвёртой степенью простого числа. Наименьшим простым нечётным делителем, отличным от единицы, будет это простое число .

Слайд 21

169. ( А . Кабанов ) Обозначим через S сумму простых делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение S равным нулю . Напишите программу, которая перебирает целые числа, большие 250000 в порядке возрастания и ищет среди них такие, для которых значение S не равно нулю и кратно 17. Программа должна найти первые 5 таких чисел. Для каждого из них в отдельной строке сначала выводится само число, затем значение S. Строки выводятся в порядке возрастания найденных чисел.

Слайд 22

# Автор : А. Кабанов k, x = 0, 150001 while k!=7: sq = int (x**0.5) d = set() for i in range(2,sq+1): if x%i ==0: d.add ( i ) d.add (x// i ) s = sum(d) if s%13==10: k+=1 print( x,s ) x+=1 168. ( А . Кабанов ) Обозначим через S сумму всех натуральных делителей целого числа , кроме единицы и самого числа. Если таких делителей у числа нет, то считаем значение S равным нулю. Напишите программу, которая перебирает целые числа, большие 150000 в порядке возрастания и ищет среди них такие, для которых значение S при делении на 13 даёт остаток 10. Программа должна найти и первые 7 таких чисел. Для каждого из них запишите в отдельной строке сначала само число, затем значение S . Строки выводятся в порядке возрастания найденных чисел.

Слайд 23

def prime(x): sq = int (x**0.5) for i in range(2,sq+1): if x%i ==0: return False return x>1 k = 0 p1 = 2 for x in range(3,1000001): if not prime(x): k+=1 else: if k>=90: print(p1, x) p1 = x k = 0 167. ( Н . Плотицын ) Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [3; 1000000] последовательности подряд идущих составных чисел длиной не менее 90. Для каждой найденной последовательности запишите в порядке возрастания простые числа, стоящие на границах данных последовательностей. В ответе запишите эти пары простых чисел в порядке возрастания первого числа в паре.