สิ่งที่คุณต้องทำคือสร้างฟังก์ชั่น / โปรแกรมที่รับทศนิยมเป็นอินพุทและเอาท์พุทผลลัพธ์ของการรับส่วนกลับของส่วนที่เป็นเศษส่วนของตัวเลขซ้ำ ๆ จนกระทั่งจำนวนกลายเป็นจำนวนเต็ม
โดยเฉพาะอย่างยิ่งกระบวนการดังต่อไปนี้:
ให้ x เป็นอินพุต
ถ้า x เป็นจำนวนเต็มให้เอาท์พุท
มิฉะนั้น:(x)} กลับไปที่ 2
เป็นองค์ประกอบที่เศษส่วนของและเท่ากับ\ เป็นพื้นของ x, ซึ่งเป็นเลขยิ่งน้อยกว่าx
กรณีทดสอบ:
0 = 0
0.1 = 1/10 -> 10
0.2 = 1/5 -> 5
0.3 = 3/10 -> 10/3 -> 1/3 -> 3
0.4 = 2/5 -> 5/2 -> 1/2 -> 2
0.5 = 1/2 -> 2
0.6 = 3/5 -> 5/3 -> 2/3 -> 3/2 -> 1/2 -> 2
0.7 = 7/10 -> 10/7 -> 3/7 -> 7/3 -> 1/3 -> 3
0.8 = 4/5 -> 5/4 -> 1/4 -> 4
0.9 = 9/10 -> 10/9 -> 1/9 -> 9
1 = 1
3.14 = 157/50 -> 7/50 -> 50/7 -> 1/7 -> 7
6.28 = 157/25 -> 7/25 -> 25/7 -> 4/7 -> 7/4 -> 3/4 -> 4/3 -> 1/3 -> 3
สรุปสำหรับ 0 ถึง 1 ที่เพิ่มขึ้น 0.1: 0, 10, 5, 3, 2, 2, 2, 3, 4, 9, 1
นี่คือโค้ดกอล์ฟซึ่งมีจำนวนน้อยที่สุดที่จะชนะ
ชี้แจง:
- "คะแนนโบนัส" โดยไม่มีข้อผิดพลาดในการปัดเศษ
- ควรทำงานกับจำนวนตรรกยะที่ไม่เป็นลบ (ละเว้นข้อผิดพลาดในการปัดเศษ)
- คุณสามารถ แต่ไม่จำเป็นต้องแสดงขั้นตอนที่ทำ
- คุณสามารถรับข้อมูลเป็นทศนิยมเศษส่วนหรือคู่ของตัวเลขซึ่งสามารถอยู่ในสตริง
ขออภัยสำหรับปัญหาทั้งหมดนี่เป็นคำถามแรกของฉันในเว็บไซต์นี้