Задача: дано n и две строки s1 и s2. Нужно вывести n строк, где строки чередуются: s1, s2, s1, s2, ... начиная с s1.
Что нужно сделать
- Прочитать целое число n.
- Прочитать две строки s1 и s2.
- Вывести n строк, очередность: s1, s2, s1, s2, ... до n-й строки.
Пошаговый алгоритм
- Считать вход и пропустить пустые строки, взять первое число как n.
- Далее взять следующую непустую строку как s1, затем ещё одну как s2.
- Для i от 0 до n-1 печатать s1, если i чётное; иначе s2.
- Временная сложность: O(n * max(len(s1), len(s2))) на вывод.
- Дополнительной памяти требуется O(1) помимо вывода.
Пример работы
- Ввод: 4 ---! !---
---! !---
- Вывод: ---! !---
---! !---
Ввод: 3
!===!
Вывод:
!===!
Код на Python (работает с потоковым вводом, устойчив к лишним пустым строкам)
def solve(): import sys data = sys.stdin.read().splitlines() i = 0 # пропускаем пустые строки в начале while i < len(data) and data[i].strip() == "": i += 1 if i >= len(data): return n = int(data[i].strip()) i += 1
# находим s1
while i < len(data) and data[i].strip() == "":
i += 1
if i >= len(data):
return
s1 = data[i].rstrip("\n")
i += 1
# находим s2
while i < len(data) and data[i].strip() == "":
i += 1
if i >= len(data):
return
s2 = data[i].rstrip("\n")
# формируем вывод
out_lines = []
for k in range(n):
out_lines.append(s1 if k % 2 == 0 else s2)
sys.stdout.write("\n".join(out_lines))
if name == "main": solve()
Если у вас есть конкретные примеры входных данных, могу проверить и показать результат пошагово.