Nhiệm vụ của bạn là tính toán từ từ lũy thừa, với các bước sau:
Cho hai đầu vào (trong ví dụ này là 4 và 8), bạn phải tính toán lũy thừa bằng cách tính từng phương trình từng bit. Bạn sẽ làm 4^8
, có giá trị cơ bản lớn hơn (4) và số mũ nhỏ hơn (8). Bạn có thể làm điều này bằng cách sử dụng lũy thừa và chia. Bạn có thể chia số mũ cho một giá trị X (với điều kiện X là ước số nguyên tố của số mũ) và biến giá trị cơ sở ( B ) thành B^X
. Ví dụ: bạn có thể làm:
4^8 = (4 ^ 2)^(8 / 2) = 16^4
Tôi đã thay X bằng 2 trong phương trình trước.
Bạn có thể 'đơn giản hóa' 16^4
hơn nữa, một lần nữa với X = 2
:
16^4 = (16 ^ 2)^(4 / 2) = 256^2
Và cuối cùng tính một số (một lần nữa, X = 2
):
256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536
Vì thế,
4^8 = 16^4 = 256^2 = 65536
Đây là đầu ra bạn nên cung cấp. Dấu tách đầu ra là một chút linh hoạt, ví dụ, bạn có thể tách các phương trình bằng dòng mới hoặc dấu cách thay vì =
. Hoặc, bạn có thể đưa chúng vào danh sách (nhưng bạn không được sử dụng chữ số hoặc ^
ký tự làm dấu phân cách).
Như Martin Ender đã chỉ ra, ^
nó cũng linh hoạt. Ví dụ, bạn có thể sử dụng [A, B]
hoặc A**B
thay vì A^B
trong đầu ra.
X chỉ có thể là số nguyên tố, có nghĩa là bạn không thể sử dụng X = 8
để đi thẳng vào giải pháp và các giá trị của X sẽ chỉ là các thừa số nguyên tố của đầu vào thứ hai (số mũ).
Ví dụ:
(input) -> (output)
4^8 -> 4^8=16^4=256^2=65536
5^11 -> 5^11=48828125
2^15 -> 2^15=32^3=32768 (2^15=8^5=32768 is also a valid output)
Lưu ý rằng định dạng đầu vào cũng linh hoạt (ví dụ: bạn có thể lấy A \n B
hoặc A B
thay vì A^B
. Rõ ràng, điều này sẽ không thành vấn đề nếu bạn viết một hàm lấy hai đối số.
Trong ví dụ thứ hai, chúng ta đi thẳng vào tính toán, vì 11
là số nguyên tố và chúng ta không thể thực hiện thêm bước nào nữa.
Bạn có thể viết một chương trình hoặc một hàm để giải quyết điều này và bạn có thể in hoặc trả lại giá trị tương ứng.
Vì đây là môn đánh gôn , mã ngắn nhất sẽ thắng!
x^1
?
32^3
và8^15
cũng không phải là 512.