Форум » Обработка целых чисел » Задание 25 №5663 (PRO100 ЕГЭ) » Ответить

Задание 25 №5663 (PRO100 ЕГЭ)

Prosto_Tak: Сходится только первый ответ. При выводе всех подходящих под первое и второе условие чисел, нужные ответы в списке есть, но под другими номерами(496,992,1486,1982 вместо 501, 1001, 1501,2001) Не могу найти в чём ошибка [pre2] for i in range(10000,19969): s=str(i) if s[0]=='1' and s[3]=='6' and s[4]=='8' and i%161==0: v=i k=0 for i in range(v,17*10**6+1,161): s=str(i) if s.find('68')-s.find('1')>2 and s.find('68')>=0 and s.find('1')>=0: k+=1 if (k-1)%500==0: print(i,i//161) [/pre2] Ответ: 14168 88 10668504 66264 12713687 78967 14768530 91730 16796808 104328

Ответов - 1

PRO100 ЕГЭ: Prosto_Tak Здравствуйте! Ваше условие [pre2] if s.find('68')-s.find('1')>2 and s.find('68')>=0 and s.find('1')>=0: [/pre2] неверно обрабатывает подходящие строки(числа), например вот такие: 126868, 1268680, 1688568, 7168686, 8176868 и т.д. То есть такие в которых две или более комбинации 68. Метод find ищет первое вхождение 68 и разность получается меньше либо равна 2, а в этих строках есть ещё одна комбинация 68 на нужном расстоянии. Подходящая строка пропускается. Вам нужно использовать rfind



полная версия страницы