Форум » Выполнение и анализ алгоритмов для исполнителей » 5993 ЕГЭ 12 » Ответить

5993 ЕГЭ 12

Ксения24: Добрый день! Помогите, пожалуйста разобраться. ЕГЭ 12 №321 На вход приведённой выше программе поступает строка, начинающаяся с символов «>2», затем n пар цифр «12» и в конце символ «<». Определите наименьшее значение n, при котором сумма цифр строки, получившейся в результате выполнения программы, будет больше, чем 103. «for n in range(1,50): s='>2'+'12'* n+'<' while '>2<' not in s: s=s.replace('>1','>2',1) s=s.replace('12<','1<2',1) s=s.replace('>21','1>',1) s=s.replace('1<','<2',1) s=s.replace('>','',1) s=s.replace('<','',1) if sum(int(x) for x in s)>103: print(n)» Программа зацикливается при n=1/ Прокрутила вручную- так же, работает только с четными числами. Как объяснить детям, что нужны только честные числа? Поставил шаг и ответ правильный

Ответов - 1

Ж: Можно отследить, происходит ли изменение строки, если нет, до выходить из цикла по причине зависания... [pre2] for n in range(1,100): s='>2'+'12'* n+'<' s1='' while s1!=s and '>2<' not in s: s1=s s=s.replace('>1','>2',1) s=s.replace('12<','1<2',1) s=s.replace('>21','1>',1) s=s.replace('1<','<2',1) s=s.replace('>','',1) s=s.replace('<','',1) if sum(int(x) for x in s)>103: print(n) break [/pre2]



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