
Вопрос задан 21.05.2019 в 13:16.
Предмет Информатика.
Спрашивает Мицевич Лёша.
Будем рассматривать только строчки, состоящие из заглавных латинских букв. Например, рассмотрим
строку AAAABCCCCCDDDD. Длина этой строки равна 14. Поскольку строка состоит только из латинских букв, повторяющиеся символы могут быть удалены и заменены числами, определяющими количество повторений. Таким образом, данная строка может быть представлена как 4AB5C4D. Длина такой строки 7. Описанный метод мы назовем упаковкой строки. Напишите программу, которая берет упакованную строчку и восстанавливает по ней исходную строку. Входные данные Одна упакованная строка. В строке могут встречаться только конструкции вида nA, где n - количество повторений символа (целое число от 2 до 99), а A - заглавная латинская буква, либо конструкции вида A, то есть символ без числа, определяющего количество повторений. Максимальная длина строки не превышает 80. Выходные данные Выведите восстановленную строку. При этом строка должна быть разбита на строчки длиной ровно по 40 символов (за исключением последней, которая может содержать меньше 40 символов). Примеры Вход Выход 3A4B7D AAABBBBDDDDDDD 22D7AC18FGD DDDDDDDDDDDDDDDDDDDDDDAAAAAAACFFFFFFFFFF FFFFFFFFGD 95AB AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAB

Ответы на вопрос

Отвечает Журавлёв Алексей.
// PascalABC.NET 3.2, сборка 1421 от 22.04.2017
// Внимание! Если программа не работает, обновите версию!
begin
var s:=ReadlnString.MatchValues('((\d*[A-Z]))');
var r:string:='';
foreach var c in s do
if c.Length=1 then r:=r+c
else r:=r+c[:c.Length].ToInteger*(c[c.Length]);
Writeln(r)
end.
// Внимание! Если программа не работает, обновите версию!
begin
var s:=ReadlnString.MatchValues('((\d*[A-Z]))');
var r:string:='';
foreach var c in s do
if c.Length=1 then r:=r+c
else r:=r+c[:c.Length].ToInteger*(c[c.Length]);
Writeln(r)
end.



Отвечает Рустамова Ксения.
# Python 3.X
source = input('Введите строку: ')
ret = ''
for idx, char in enumerate(source):
try:
next = source[idx + 1]
if char.isdigit() and next.isdigit():
qt = 10 * int(char) + int(next)
next = source[idx + 2]
else:
qt = int(char)
except:
ret += char
else:
ret += next * (qt - 1)
print('Ответ:', ret)
source = input('Введите строку: ')
ret = ''
for idx, char in enumerate(source):
try:
next = source[idx + 1]
if char.isdigit() and next.isdigit():
qt = 10 * int(char) + int(next)
next = source[idx + 2]
else:
qt = int(char)
except:
ret += char
else:
ret += next * (qt - 1)
print('Ответ:', ret)


Топ вопросов за вчера в категории Информатика

Информатика 562

Информатика 404

Информатика 31

Информатика 76

Информатика 16

Информатика 41

Информатика 31
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili