Kami memiliki angka floating point rantara 0 dan 1, dan bilangan bulat p.
Temukan fraksi bilangan bulat dengan penyebut terkecil, yang mendekati rdengan setidaknya p-digit presisi.
- Input:
r(angka floating point) danp(integer). - Output:
adanbbilangan bulat, di manaa/b(as float) mendekatirhinggapdigit.badalah bilangan bulat positif terkecil yang mungkin.
Sebagai contoh:
- jika
r=0.14159265358979danp=9, - maka hasilnya adalah
a=4687danb=33102, - karena
4687/33102=0.1415926530119026.
Setiap solusi harus bekerja secara teori dengan tipe presisi arbitrer, tetapi batasan yang disebabkan oleh tipe presisi tetap implementasi tidak menjadi masalah.
Presisi berarti jumlah digit setelah " 0." dalam r. Jadi, jika r=0.0123dan p=3, maka a/bharus dimulai dengan 0.012. Jika pdigit pertama dari bagian fraksional radalah 0, perilaku tidak terdefinisi dapat diterima.
Kriteria menang:
- Algoritme tercepat secara algoritmik menang. Kecepatan diukur dalam O (p).
- Jika ada beberapa algoritma tercepat, maka yang paling pendek menang.
- Jawaban saya sendiri dikecualikan dari himpunan pemenang yang mungkin.
Ps bagian matematika sebenarnya jauh lebih mudah seperti yang terlihat, saya sarankan untuk membaca posting ini .
padEnddanmatch? Tidak bisakah Anda hanyaslicesetiap string dengan panjang yang benar dan kemudian kurangi?