Latar Belakang
Pembagi umum terbesar ( singkatnya gcd ) adalah fungsi matematika yang praktis, karena memiliki banyak properti yang berguna. Salah satunya adalah identitas Bézout : jika d = gcd(a, b)
, maka ada bilangan bulat x
dan y
semacamnya d = x*a + y*b
. Dalam tantangan ini, tugas Anda adalah memvisualisasikan properti ini dengan seni ASCII sederhana.
Memasukkan
Input Anda adalah dua bilangan bulat positif a
dan b
, diberikan dalam format apa pun yang masuk akal. Anda juga dapat mengambil input unary (pengulangan satu karakter ASCII yang dapat dicetak pilihan Anda), tetapi Anda harus konsisten dan menggunakan format yang sama untuk kedua input. Masukan mungkin dalam urutan apa pun, dan mereka mungkin sama.
Keluaran
Output Anda adalah string s
panjang lcm(a, b) + 1
( lcm adalah singkatan untuk multiple umum terendah). Karakter s
mewakili integer dari 0
ke lcm(a, b)
. Karakter s[i]
adalah huruf kecil o
jika i
merupakan kelipatan dari a
atau b
, dan periode .
sebaliknya. Perhatikan bahwa nol adalah kelipatan dari setiap angka. Sekarang, karena identitas Bézout ini, akan ada setidaknya satu pasangan dari karakter o
di s
yang jarak persis gcd(a, b)
. Pasangan yang paling kiri harus diganti oleh huruf besar O
; ini adalah hasil akhir.
Contoh
Pertimbangkan input a = 4
dan b = 6
. Lalu kita punya gcd(a, b) = 2
dan lcm(a, b) = 12
, jadi panjangnya s
akan 13
. Kelipatan dari a
dan b
disorot sebagai berikut:
0 1 2 3 4 5 6 7 8 9 10 11 12
o . . . o . o . o . . . o
Ada dua pasang o
s dengan jarak dua, tetapi kami hanya akan mengganti yang paling kiri dengan O
s, sehingga hasil akhirnya adalah
o...O.O.o...o
Aturan dan penilaian
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji kasus
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
atauO
.) Atau haruskah demikian1
? Atau0
?