Đề bài
Số mũ là numerator / denominator. Tính base_value lũy thừa số mũ đó và trả về kết quả là số thực. Ví dụ, số mũ 1/3 sẽ cho ra căn bậc ba dương.
Cài đặt hàm real_to_rational_power(base_value, numerator, denominator).
Đầu vào
base_value: Cơ số dương.
numerator: Tử số của số mũ.
denominator: Mẫu số của số mũ.
Đầu ra
Trả về base_value lũy thừa numerator / denominator.
Ràng buộc
0.1 ≤ base_value ≤ 100, với tối đa hai chữ số thập phân. −6 ≤ numerator ≤ 6; 1 ≤ denominator ≤ 10. Đáp án được chấp nhận nếu sai số tuyệt đối hoặc tương đối không quá 0.000001.
Ví dụ
Đầu vào:
numerator = 1
base_value = 8.0
denominator = 3
Kết quả mong đợi:
expected = 2.0
Đầu vào:
long long numerator = 1;
double base_value = 8.0;
long long denominator = 3;
Kết quả mong đợi:
double expected = 2.0;
Đầu vào:
long numerator = 1;
double base_value = 8.0;
long denominator = 3;
Kết quả mong đợi:
double expected = 2.0;
Giải thích
2 × 2 × 2 = 8, nên căn bậc ba của 8 là 2.
Đầu vào:
numerator = -1
base_value = 16.0
denominator = 2
Kết quả mong đợi:
expected = 0.25
Đầu vào:
long long numerator = -1;
double base_value = 16.0;
long long denominator = 2;
Kết quả mong đợi:
double expected = 0.25;
Đầu vào:
long numerator = -1;
double base_value = 16.0;
long denominator = 2;
Kết quả mong đợi:
double expected = 0.25;
Giải thích
Căn bậc hai của 16 là 4, và số mũ âm lấy nghịch đảo, tức là 1/4.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Trước hết, đổi phân số số mũ thành một số mũ thực duy nhất.
Gợi ý 2
Sau đó nâng cơ số dương bằng phép lũy thừa số thực.
Gợi ý 3
Đảm bảo số mũ âm tạo ra nghịch đảo, và tránh nhầm lẫn với căn bậc phân số.
Độ phức tạp mong đợi
thời gian O(1), bộ nhớ phụ O(1)
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.