เรามีจำนวนจุดลอยrระหว่าง 0 และ 1, pและจำนวนเต็ม
ค้นหาเศษส่วนของจำนวนเต็มด้วยตัวหารที่เล็กที่สุดซึ่งใกล้เคียงrกับpความแม่นยำอย่างน้อย-digit
- อินพุต:
r(หมายเลขจุดลอยตัว) และp(จำนวนเต็ม) - ผลลัพธ์:
aและbจำนวนเต็มโดยที่a/b(ลอย) ประมาณrจนกระทั่งpตัวเลขbเป็นไปได้ที่น้อยที่สุดเช่นจำนวนเต็มบวก
ตัวอย่างเช่น:
- ถ้า
r=0.14159265358979และp=9, - แล้วผลที่ได้คือ
a=4687และb=33102, 4687/33102=0.1415926530119026เพราะ
การแก้ปัญหาใด ๆ จะต้องทำงานในทางทฤษฎีด้วยความแม่นยำโดยพลการ
แม่นยำหมายถึงจำนวนของตัวเลขหลังจากที่ " 0." rใน ดังนั้นหากr=0.0123และp=3แล้วควรเริ่มต้นด้วยa/b 0.012หากpตัวเลขแรกของส่วนที่เป็นเศษส่วนของr0 เป็นพฤติกรรมที่ไม่ได้กำหนดเป็นที่ยอมรับ
เกณฑ์การชนะ:
- อัลกอริทึมเร็วที่สุดชนะ ความเร็วถูกวัดใน O (p)
- หากมีอัลกอริธึมที่เร็วที่สุดหลายตัว
- คำตอบของฉันถูกแยกออกจากกลุ่มผู้ชนะที่เป็นไปได้
ps คณิตศาสตร์ส่วนที่เป็นจริงได้ง่ายขึ้นมากเป็นดูเหมือนว่าฉันขอแนะนำให้อ่านนี้โพสต์
padEndและmatch? คุณไม่สามารถsliceแยกความยาวให้ถูกต้องแล้วลบออกได้ไหม