กลับไปยังโจทย์
ปานกลาง 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

ยกเศษส่วนให้กับเลขชี้กำลังจริง

ยกเศษส่วนบวกให้กับเลขชี้กำลังที่เป็นจำนวนจริง

สิ่งที่คุณจะได้เรียนรู้

  • ยกกำลังเศษส่วนด้วยเลขชี้กำลังจำนวนจริง
  • ทำงานกับผลลัพธ์แบบทศนิยมลอยตัว
  • ให้ผลลัพธ์อยู่ในค่าคลาดเคลื่อนที่ยอมรับได้

โจทย์

ให้ตีความ numerator / denominator เป็นจำนวนตรรกยะบวก แล้วนำไปยกกำลัง power งานนี้จะคืนค่าจำนวนจริง ไม่ใช่เศษส่วนที่แน่นอน โดยครอบคลุมกรณีเลขชี้กำลังจริงตามหัวข้ออ้างอิง Rational Numbers

ให้เขียนฟังก์ชัน rational_to_real_power(numerator, denominator, power)

อินพุต

numerator: ตัวเศษที่เป็นจำนวนเต็มบวก

denominator: ตัวส่วนที่เป็นจำนวนเต็มบวก

power: เลขชี้กำลังที่เป็นจำนวนจริง

เอาต์พุต

คืนค่า (numerator / denominator) ยกกำลัง power

เงื่อนไข

1 ≤ numerator, denominator ≤ 100 −6 ≤ power ≤ 6 โดย power มีทศนิยมไม่เกินสองตำแหน่ง ผลลัพธ์ที่ถูกต้องจะยอมรับค่าคลาดเคลื่อนสัมบูรณ์หรือสัมพัทธ์ไม่เกิน 0.000001

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
power = 0.5
numerator = 9
denominator = 4

ผลลัพธ์ที่คาดหวัง:
expected = 1.5
อินพุต:
double power = 0.5;
long long numerator = 9;
long long denominator = 4;

ผลลัพธ์ที่คาดหวัง:
double expected = 1.5;
อินพุต:
double power = 0.5;
long numerator = 9;
long denominator = 4;

ผลลัพธ์ที่คาดหวัง:
double expected = 1.5;

คำอธิบาย

เลขชี้กำลัง 0.5 คือการหารากที่สองบวก: √(9/4) = 3/2 = 1.5

ตัวอย่างที่ 2
อินพุต:
power = -1.0
numerator = 2
denominator = 5

ผลลัพธ์ที่คาดหวัง:
expected = 2.5
อินพุต:
double power = -1.0;
long long numerator = 2;
long long denominator = 5;

ผลลัพธ์ที่คาดหวัง:
double expected = 2.5;
อินพุต:
double power = -1.0;
long numerator = 2;
long denominator = 5;

ผลลัพธ์ที่คาดหวัง:
double expected = 2.5;

คำอธิบาย

เลขชี้กำลัง −1 คือการกลับเศษส่วน: 5/2 = 2.5

แนวทางการแก้

ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ

คำใบ้ 1

มองเศษส่วนเป็นค่าจริงบวกค่าเดียวก่อน แล้วค่อยยกกำลัง

คำใบ้ 2

ใช้การยกกำลังแบบ floating-point ตรงๆ ได้เลย เพราะคำตอบเป็นค่าโดยประมาณ

คำใบ้ 3

ระวังเลขชี้กำลังติดลบและที่ดูเหมือนเศษส่วน และเก็บความละเอียดให้พอสำหรับ tolerance

ความซับซ้อนที่คาดหวัง

เวลา O(1), หน่วยความจำเพิ่ม O(1)

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก