Tugas Anda adalah, diberikan x
, keluaran 2*x
. Mudah kan !? Tapi ada tangkapan: x
akan diberikan sebagai fraksi lanjutan (mungkin tak terbatas) , dan output harus fraksi lanjutan. Input dijamin menjadi bilangan aljabar nyata yang tingkatannya paling banyak 2.
Input : Fraksi lanjutan dari x
. Ini dibagi menjadi 3 bagian: bagian integer, awalan, dan bagian berulang. Bagian integer terdiri dari satu integer. Awalan dan bagian berulang adalah (mungkin kosong) array bilangan bulat positif yang menggambarkan awalan dan bagian berulang dari fraksi lanjutan. Misalnya, input (3, [1], [2, 4])
mewakili fraksi lanjutan [3; 1, 2, 4, 2, 4, ...]
.
Jika bagian berulang kosong, itu menunjukkan angka rasional. Misalnya, (3, [1, 2], [])
mewakili [3; 1, 2] = 11/3
. Anda harus menerima kedua bentuk bilangan rasional (yaitu (3, [1, 1, 1], [])
, yang [3; 1, 1, 1] = 11/3
juga harus menjadi input yang valid).
Keluaran : Keluarkan fraksi lanjutan dari dua kali input, dalam format yang sama dengan input. Jika outputnya rasional, Anda dapat menampilkan salah satu bentuk fraksi lanjutan. Selama jawabannya setara dengan jawaban yang benar, itu baik-baik saja; tidak ada "kompresi" yang diperlukan, sehingga bagian yang tak terbatas mungkin "sedikit terbuka" (misalnya [1; 4, 2, 3, 2, 3...]
dapat ditulis (1, [4], [2, 3])
atau (1, [4, 2, 3], [2, 3])
). Semua jawaban harus tepat.
Kasus uji : Kolom formulir yang tepat diberikan untuk kenyamanan.
Input Exact Form Output
(0, [] []) 0 (0, [] []) or (-1, [1], [])
(-5, [1, 1], []) -4.5 (-9, [], []) or (-10, [1], [])
(3, [1, 2], []) 11/3 (7, [3], []) or (7, [2, 1], [])
(1, [], [2]) sqrt(2) (2, [], [1, 4])
(-1, [2], [2, 1]) -1/sqrt(3) (-2, [1, 5], [2, 6])
Dan akhirnya kasus uji yang sedikit lebih besar untuk memastikan presisi: (0, [1], [6, 1, 3, 1, 42, 1, 3, 1, 6, 2]) --> (1, [], [1, 2, 1, 8, 1, 20, 1, 8, 1, 2, 1, 2])
.
Kode terpendek menang!
Petunjuk : Anda dapat melakukan aritmatika dengan cara yang langsung pada fraksi lanjutan seperti dijelaskan di sini . Menggandakan fraksi lanjutan hanya merupakan kasus khusus dari algoritma ini (meskipun bagian yang sulit adalah menemukan ketika fraksi lanjutan berulang).
Sqrt[2]
.
[3; 1, 1, 1]
akan berada (3, [1, 1, 1], [])
dalam format input yang kami gunakan - jadi pertanyaannya mungkin harus menyebutkannya dalam format itu (dalam paragraf ketiga), hanya untuk memastikan kejelasan.
(-2, [1, 5, 2], [6, 2])
menjadi input yang dapat diterima (-1, [2], [2, 1])
? Bagaimana dengan (-2, [1, 5, 2, 6, 2, 6], [2, 6])
?