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.9diikuti oleh urutan 761904berulang-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.25tidak, 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 sebagai0dalam10). 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/4terjadi pada input?
120/11jawaban yang benar 111/11atau 210/11?
111/11kecuali bahwa jawaban yang paling tinggi saat ini kembali 210/11, jadi saya akan membiarkan Anda memilih untuk menghindari membatalkan jawaban yang ada.
2017bukan2017/1?