Lý lịch
Hầu hết các bạn đều biết số Fibonacci là gì. Một số bạn có thể biết rằng tất cả các số nguyên dương có thể được biểu diễn dưới dạng tổng của một hoặc nhiều số Fibonacci khác biệt, theo Định lý của Zeckendorf . Nếu số lượng thuật ngữ trong Zeckendorf tối ưu Biểu diễn của một số nguyên n
tự nó là một số Fibonacci, chúng ta sẽ gọi là n
"bí mật" Fibonacci.
Ví dụ:
139 = 89 + 34 + 13 + 3
This is a total of 4 integers. Since 4 is not a Fibonacci number, 139 is not secretly Fibonacci
140 = 89 + 34 + 13 + 3 + 1
This is a total of 5 integers. Since 5 is a Fibonacci number, 140 is secretly Fibonacci
Ghi chú
- Có thể tìm thấy Đại diện Zeckendorf tối ưu bằng thuật toán tham lam. Chỉ cần lấy số Fibonacci lớn nhất <= n và trừ nó từ n cho đến khi bạn đạt 0
- Tất cả các số Fibonacci có thể được biểu diễn dưới dạng tổng của 1 số Fibonacci (chính nó). Vì 1 là số Fibonacci, nên tất cả các số Fibonacci cũng bí mật là Fibonacci.
Thử thách
Thử thách của bạn là viết một chương trình hoặc hàm lấy một số nguyên và trả về việc số nguyên đó có phải là Fibonacci bí mật hay không.
Đầu vào
Bạn có thể lấy đầu vào ở bất kỳ định dạng hợp lý. Bạn có thể giả sử đầu vào sẽ là một số nguyên dương duy nhất.
Đầu ra
Xuất ra một trong hai kết quả khác nhau cho dù đầu vào có bí mật là Fibonacci hay không. Ví dụ bao gồm True
/ False
, 1
/ 0
, v.v.
Chấm điểm
Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte thắng! Sơ hở tiêu chuẩn bị cấm.
Các trường hợp thử nghiệm
Truthy (secretly Fibonacci)
1
2
4
50
140
300099
Falsey (NOT secretly Fibonacci)
33
53
54
139
118808