Kita semua tahu bahwa setiap kali angka rasional ditulis dalam desimal, hasilnya adalah penghentian atau (akhirnya) periodik. Misalnya, ketika 41/42 ditulis dalam desimal, hasilnya adalah
0.9 761904 761904 761904 761904 761904 761904 761904 ...
dengan urutan awal digit 0.9
diikuti oleh urutan 761904
berulang-ulang. (A notasi nyaman untuk ini adalah 0.9(761904)
di mana kurung mengelilingi blok mengulangi digit.)
Tujuan Anda dalam tantangan ini adalah untuk mengambil angka rasional positif, menghapus angka pertama yang merupakan bagian dari urutan berulang, dan mengembalikan nomor rasional yang dihasilkan. Misalnya, jika kita melakukan ini pada 41/42, kita dapatkan
0.9 61904 761904 761904 761904 761904 761904 761904 ...
atau 0.9(619047)
singkatnya, yaitu 101/105.
Jika bilangan rasional memiliki penghentian ekspansi desimal, seperti 1/4 = 0.25
tidak, tidak ada yang terjadi. Anda dapat menganggap 1/4 sebagai 0.250000000...
atau sebagai 0.249999999...
tetapi dalam kedua kasus tersebut, menghapus digit pertama dari bagian berulang membuat angka tidak berubah.
Detail
- Masukan adalah bilangan rasional positif, baik sebagai pasangan bilangan bulat positif yang mewakili pembilang dan penyebut, atau (jika bahasa pilihan Anda memungkinkannya dan Anda ingin) sebagai semacam objek bilangan rasional.
- Outputnya juga bilangan rasional, juga dalam bentuk apa pun. Jika hasilnya bilangan bulat, Anda dapat mengembalikan bilangan bulat bukan angka rasional.
- Jika menggunakan sepasang angka sebagai input, Anda dapat menganggapnya relatif prima; jika menghasilkan sepasang angka sebagai output, Anda harus membuatnya menjadi prima.
- Berhati-hatilah agar Anda menemukan digit pertama yang memulai blok berulang. Sebagai contoh, seseorang dapat menulis 41/42 sebagai
0.97(619047)
tetapi itu tidak membuat 2041/2100 (dengan ekspansi desimal0.97(190476)
) jawaban yang valid. - Anda dapat mengasumsikan bahwa dalam input yang Anda dapatkan, digit periodik pertama adalah setelah titik desimal, menjadikan
120/11
=10.909090909...
input tidak valid: (digit periodik pertamanya dapat dianggap sebagai0
dalam10
). Anda dapat melakukan apapun yang Anda suka pada input tersebut. - Ini adalah kode-golf : solusi terpendek menang.
Uji kasus
41/42 => 101/105
101/105 => 193/210
193/210 => 104/105
104/105 => 19/21
1/3 => 1/3
1/4 => 1/4
2017/1 => 2017/1
1/7 => 3/7
1/26 => 11/130
1234/9999 => 2341/9999
(2017,1)
.)
2/4
terjadi pada input?
120/11
jawaban yang benar 111/11
atau 210/11
?
111/11
kecuali bahwa jawaban yang paling tinggi saat ini kembali 210/11
, jadi saya akan membiarkan Anda memilih untuk menghindari membatalkan jawaban yang ada.
2017
bukan2017/1
?