Chúng ta có một số dấu phẩy động rtừ 0 đến 1 và một số nguyên p.
Tìm phân số nguyên có mẫu số nhỏ nhất, gần đúng rvới ít nhất là pđộ chính xác kỹ thuật số.
- Đầu vào:
r(một số dấu phẩy động) vàp(số nguyên). - Đầu ra:
avàbsố nguyên, trong đóa/b(như float) xấp xỉrcho đến khipchữ số.blà số nguyên dương nhỏ nhất có thể có.
Ví dụ:
- nếu
r=0.14159265358979vàp=9, - sau đó kết quả là
a=4687vàb=33102, - vì
4687/33102=0.1415926530119026.
Bất kỳ giải pháp nào cũng phải hoạt động trên lý thuyết với các loại độ chính xác tùy ý, nhưng các hạn chế gây ra bởi các loại độ chính xác cố định của việc triển khai không thành vấn đề.
Độ chính xác có nghĩa là số chữ số sau " 0." in r. Vì vậy, nếu r=0.0123và p=3, sau đó a/bnên bắt đầu với 0.012. Nếu các pchữ số đầu tiên của phần phân số rlà 0, hành vi không xác định được chấp nhận.
Đạt tiêu chí:
- Thuật toán nhanh nhất chiến thắng. Tốc độ được đo bằng O (p).
- Nếu có nhiều thuật toán nhanh nhất, thì chiến thắng ngắn nhất.
- Câu trả lời của riêng tôi được loại trừ khỏi tập hợp những người chiến thắng có thể.
Phần toán học thực sự dễ dàng hơn nhiều vì có vẻ như, tôi đề nghị đọc bài này .
padEndvàmatch? Bạn có thể chỉslicemỗi chuỗi với độ dài chính xác và sau đó trừ chúng?