Задний план
Наибольший общий делитель ( для краткости gcd ) - это удобная математическая функция, поскольку она имеет много полезных свойств. Одним из них является личность Безу : если d = gcd(a, b)
, то существуют целые числа x
и y
такие, что d = x*a + y*b
. В этой задаче ваша задача состоит в том, чтобы визуализировать это свойство с помощью простого искусства ASCII.
вход
Ваши входы два положительных целых чисел a
и b
, приведенные в любом приемлемом формате. Вы также можете использовать унарные входные данные (повторы одного печатного символа ASCII по вашему выбору), но вы должны быть последовательными и использовать один и тот же формат для обоих входных данных. Входные данные могут быть в любом порядке, и они могут быть равны.
Выход
Ваш вывод представляет собой строку s
длины lcm(a, b) + 1
( lcm обозначает наименьшее общее кратное). Символы s
представляют целые числа от 0
до lcm(a, b)
. Символ s[i]
является строчным, o
если i
кратен a
или b
, и период в .
противном случае. Обратите внимание, что ноль кратен каждому числу. Теперь, из - за идентичности Безу, будет по крайней мере одна пара символов o
в s
которых расстояние точно gcd(a, b)
. Крайняя левая такая пара должна быть заменена заглавными O
s; это окончательный результат.
пример
Рассмотрим входы a = 4
и b = 6
. Тогда у нас gcd(a, b) = 2
и lcm(a, b) = 12
, значит, длина s
будет 13
. Кратные a
и b
выделены следующим образом:
0 1 2 3 4 5 6 7 8 9 10 11 12
o . . . o . o . o . . . o
Есть две пары o
s с расстоянием два, но мы заменим только самые левые с O
s, поэтому окончательный результат
o...O.O.o...o
Правила и оценки
Вы можете написать полную программу или функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Контрольные примеры
1 1 -> OO
2 2 -> O.O
1 3 -> OOoo
4 1 -> OOooo
2 6 -> O.O.o.o
2 3 -> o.OOo.o
10 2 -> O.O.o.o.o.o
4 5 -> o...OO..o.o.o..oo...o
8 6 -> o.....O.O...o...o.o.....o
12 15 -> o...........O..O........o.....o.....o........o..o...........o
19 15 -> o..............o...o..........o.......o......o...........o..o..............OO.............o....o.........o........o.....o............o.o..............o.o............o.....o........o.........o....o.............oo..............o..o...........o......o.......o..........o...o..............o
.
,o
илиO
.) Или же он должен быть1
? Или0
?