Hướng
Viết chương trình, cho một số nguyên đầu vào n ( n >= 0
), xuất ra số nguyên dương m nhỏ nhất trong đó:
n = a[1]^b[1] + a[2]^b[2] + a[3]^b[3] + ... + a[k]^b[k]
a
vàb
là các chuỗi hữu hạn có cùng độ dài- tất cả các yếu tố của
a
ít hơnm
- tất cả các yếu tố của
b
ít hơnm
- tất cả các yếu tố
a
là khác nhau và số nguyêna[x] >= 0
- tất cả các yếu tố
b
là khác nhau và số nguyênb[x] >= 0
a[x]
vàb[x]
không phải là cả 0 (vì 0 ^ 0 là không xác định)
Đây là mã golf , vì vậy ít byte nhất sẽ thắng.
Ví dụ
In 0 -> Out 1
Possible Sum:
In 1 -> Out 2
Possible Sum: 1^0
In 2 -> Out 3
Possible Sum: 2^1
In 3 -> Out 3
Possible Sum: 2^1 + 1^0
In 6 -> Out 4
Possible Sum: 2^2 + 3^0 + 1^1
In 16 -> Out 5
Possible Sum: 2^4
In 17 -> Out 4
Possible Sum: 3^2 + 2^3
In 23 -> Out 6
Possible Sum: 5^1 + 3^0 + 2^4 + 1^3
In 24 -> Out 5
Possible Sum: 4^2 + 2^3
In 27 -> Out 4
Possible Sum: 3^3
In 330 -> Out 7
Possible Sum: 6^1 + 4^3 + 3^5 + 2^4 + 1^0
m<2
đó m<3
sau đó, m<4
vv cho đến khi tôi tìm thấy một tổng bằng n
. Ngoài ra, tôi nghĩ về việc có tổng 0
không có điều khoản, nhưng sau đó đầu ra là gì? m>?
n = a[1]^b[1] + a[2]^b[2] + ... + a[k]^b[k]
.
a
và b
là các chuỗi có độ dài hữu hạn 0
, do đó không có số nguyên m
nào không thỏa mãn các ràng buộc và vì không có số nguyên nhỏ nhất nên câu trả lời không được xác định. Các cách khắc phục có thể là yêu cầu số tự nhiên nhỏ nhất m
(trong trường hợp đó bạn nên thay đổi câu trả lời dự kiến ở đó 0
) hoặc cho số nguyên dương nhỏ nhất m
.