Giới thiệu về Zeckendorf Đại diện / Số Fibonacci cơ sở
Đây là một hệ thống số sử dụng các số Fibonacci làm cơ sở. Các số bao gồm 0 và 1 và mỗi 1 có nghĩa là số đó chứa số Fibonacci tương ứng và 0 có nghĩa là không.
Ví dụ: hãy chuyển đổi tất cả các số tự nhiên <= 10 thành Fibonacci cơ sở.
1 sẽ trở thành 1, bởi vì nó là tổng của 1, là số Fibonacci,
2 sẽ trở thành 10, vì đó là tổng của 2, là số Fibonacci và không cần 1, vì chúng tôi đã đạt được tổng mong muốn.
3 sẽ trở thành 100, vì đó là tổng của 3, là số Fibonacci và nó không cần 2 hoặc 1 vì chúng tôi đã đạt được số tiền mong muốn.
- 4 sẽ trở thành 101, vì nó là tổng của [3,1], cả hai đều là số Fibonacci.
- 5 sẽ trở thành 1000, vì đó là tổng của 5, là số Fibonacci và chúng tôi không cần bất kỳ số nào khác.
- 6 sẽ trở thành 1001, bởi vì nó là tổng của các số Fibonacci 5 và 1.
- 7 sẽ trở thành 1010, bởi vì nó là tổng của các số Fibonacci 5 và 2.
- 8 sẽ trở thành 10000, bởi vì nó là một số Fibonacci.
- 9 sẽ trở thành 10001, bởi vì nó là tổng của các số Fibonacci 8 và 1.
- 10 sẽ trở thành 10010, bởi vì nó là tổng của các số Fibonacci 8 và 2.
Chúng ta hãy chuyển đổi một số Fibonacci cơ sở ngẫu nhiên, 10101001010 thành số thập phân: Đầu tiên chúng ta viết các số Fibonacci tương ứng. Sau đó, chúng tôi tính tổng của các số dưới 1.
1 0 1 0 1 0 0 1 0 1 0
144 89 55 34 21 13 8 5 3 2 1 -> 144+55+21+5+2 = 227.
Đọc thêm về các số Fibonacci cơ sở: liên kết , nó cũng có một công cụ chuyển đổi các số nguyên thông thường thành các số liệu cơ sở. Bạn có thể thử nghiệm với nó.
Bây giờ câu hỏi:
Nhiệm vụ của bạn là lấy một số trong Biểu diễn Zeckendorf và xuất giá trị thập phân của nó.
Đầu vào là một chuỗi chỉ chứa 0 và 1 (mặc dù bạn có thể lấy đầu vào theo bất kỳ cách nào bạn muốn).
Xuất một số ở dạng thập phân.
Các trường hợp thử nghiệm: (ở định dạng đầu vào-> đầu ra)
1001 -> 6
100101000 -> 73
1000000000 -> 89
1001000000100100010 -> 8432
1010000010001000100001010000 -> 723452
Đây là môn đánh gôn, vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng.
Lưu ý: Đầu vào sẽ không chứa bất kỳ 0 hàng đầu hoặc 1 liên tiếp nào.