На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.
Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.
Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».
Добрый день! Помогите, пожалуйста разобраться. ЕГЭ 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/ Прокрутила вручную- так же, работает только с четными числами. Как объяснить детям, что нужны только честные числа? Поставил шаг и ответ правильный
Отправлено: 05.12.23 20:37. Заголовок: Можно отследить, про..
Можно отследить, происходит ли изменение строки, если нет, до выходить из цикла по причине зависания...
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
Отправлено: 21.02.25 19:38. Заголовок: Лучше поздно, чем никогда
Я считаю, что в текст задачи вкралась нечаянная ошибка. Если изменить последовательность замен, то задача решается без проблем. Предлагая автору/модератору исправить условие на следующий вариант:
Дана программа для исполнителя Редактор: НАЧАЛО ПОКА НЕ нашлось (>2<) заменить (>1 , >2) заменить (>21 , 1>) //эта строка переставлена на новое место! заменить (12< , 1<2) заменить (1< , <2) КОНЕЦ ПОКА КОНЕЦ
Отправлено: 25.02.25 17:11. Заголовок: Эта задача содержит ..
Эта задача содержит "закладку" от прямого перебора. Хотя ее тоже можно обойти:
for n in range(1,1000): s = '>2' + '12'*n + '<' while '>2<' not in s: s0 = 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) if s0 == s: break if '>2<' in s: sumDigits = sum( map(int, (c for c in s if c in '12') ) ) if sumDigits > 103: print( n, s ) break
Все даты в формате GMT
3 час. Хитов сегодня: 118
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет