Форум » Выполнение и анализ алгоритмов для исполнителей » Задание 14. №241 Не сходится ответ. » Ответить

Задание 14. №241 Не сходится ответ.

AndreyKAT: Дана программа для Редактора: НАЧАЛО ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>3) ЕСЛИ нашлось (>1) ТО заменить (>1, 22>3) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (>2) ТО заменить (>2, 2>) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (>3) ТО заменить (>3, 11>2) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ На вход приведённой ниже программе поступает строка, начинающаяся с символа «>», а затем со-держащая 14 цифр 1, 20 цифр 2 и 25 цифр 3, расположенных в произвольном порядке. Определите сумму числовых значений цифр строки, получившейся в результате выполнения про-граммы. [pre] s = ">"+"1"*14+"2"*20+"3"*25 a1 = ">1"; a2 = "22>3" b1 = ">2"; b2 = "2>" c1 = ">3"; c2 = "11>2" v=0 while a1 in s or b1 in s or c1 in s: if a1 in s: s = s.replace(a1, a2, 1) if b1 in s: s = s.replace(b1, b2, 1) if c1 in s: s = s.replace(c1, c2, 1) for i in range (1,len(s)-1): v+=int(s) print(s) print(v)[/pre] У меня получается 250, в ответе 400. Что не так?

Ответов - 7

cabanov.alexey: Я бы сказал что ответ 252 [pre2] for i in range (0,len(s)-1): v+=int(s) [/pre2]

AndreyKAT: Строка заканчивается на ....2>. Последний символ будет ">", поэтому len(s)-1 написал

cabanov.alexey: Тогда вы первую цифру теряете. В общем, ответ 252, тк из 1 будет 22112, и 2 будет 2, из 3 будет 112


AndreyKAT: Да заметил) Правильно будет так, и ответ 252. [pre]for i in range (len(s)-1): v+=int(s)[/pre] Благодарю!

Поляков: Спасибо, ответ исправлен.

aln1947: Задача 14.242 Возьмем «короткую строку» из заданных цифр в произвольном порядке: >231 2>3 1 211>21 2112>1 211222>3 21122211>2 211222112> Т.о. из строки 231 получилась строка 211222112 В ней 5 «2» и 4 «1», а «3» - нет. Значит, число «1» выросло в 4 раза, число «2» - в 5 раз, а «3» ушла. Применим к условию задачи: 25 цифр 1, 17 цифр 2 и 10 цифр 3. Получим в результате: 25*4= 100 единиц и 17*5 = 85 двоек. Сумма равна 100+170=270. Ответ в задаче: 274 Где ошибка?

cabanov.alexey: Цифр не одинаковое количество, нужно разобрать каждую отдельно. >1 22>3 2211>2 22112> >2 2> >3 11>2 112> Из 1 стала 8, из 2 стала 2, из тройки стала 4. 25*8 + 17*2 + 10*4 = 274 Ответ верный.



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