Предмет: Информатика, автор: Аноним

Задача 11
Ребята в клубе современного искусства делают три плаката для проекта. Все плакаты должны быть одной длины, и на каждом из них — по одному слову, повторенному несколько раз.
Так вышло, что три слова для плакатов все разной длины (и их длины не имеют общих делителей). Бумаги мало, поэтому длина плаката должна быть наименьшей из возможных.
Даны три слова. Выведи три строки одинаковой длины, состоящие из этих слов.
Ввод Вывод
ко
кот
котик кококококококококококококококо
коткоткоткоткоткоткоткоткоткот
котиккотиккотиккотиккотиккотик

Ответы

Автор ответа: лекция
4

a = input()

b = input()

c = input()

i = 1

while True:

   if i % len(a) == 0 and i % len(b) == 0 and i % len(c) == 0:

       break

   i += 1

print(a * (i // len(a)))

print(b * (i // len(b)))

print(c * (i // len(c)))


лекция: судя по всему, нужно найти нок длин слов. его можно найти как нок длин первых двух слов и длины третьего слова(как утверждает вики)
лекция: т.е. lcm(a, b, c) = lcm(lcm(a, b), c)
лекция: сам нок находится как:
лекция: lcm(a, b) = |a * b| / gcd(a,b) , где gcd = нод
лекция: его можно найти по алгоритму евклида, но я не уверен что его возможно будет реализовать без циклов и условий
Похожие вопросы
Предмет: Английский язык, автор: vernerenergo390
Предмет: Математика, автор: Angelinapastosh1