Cây tìm kiếm nhị phân sọc
Đề bài
Mô tả
Một cây tìm kiếm nhị phân là cây nhị phân có gốc, mỗi đỉnh lưu một khóa và có tối đa hai cây con: cây con trái và cây con phải. Khóa tại mỗi đỉnh phải lớn hơn mọi khóa trong cây con trái và nhỏ hơn mọi khóa trong cây con phải của nó.
Độ sâu của một đỉnh là số cạnh trên đường đi đơn từ đỉnh đó tới gốc; đặc biệt, độ sâu của gốc bằng .
Ta gọi một cây tìm kiếm nhị phân là cân bằng hoàn hảo nếu không tồn tại cây tìm kiếm nhị phân nào có cùng số đỉnh mà tổng độ sâu của các đỉnh nhỏ hơn thực sự.
Ta gọi một cây tìm kiếm nhị phân với khóa nguyên là sọc nếu với mọi đỉnh , cả hai điều kiện sau đều thỏa mãn:
- Nếu có cây con trái với gốc là thì khóa của và khóa của khác tính chẵn lẻ.
- Nếu có cây con phải với gốc là thì khóa của và khóa của cùng tính chẵn lẻ.
Cho một số nguyên . Hãy đếm số cây tìm kiếm nhị phân vừa cân bằng hoàn hảo vừa sọc, có đỉnh với các khóa nguyên đôi một phân biệt nhận giá trị từ đến . In kết quả theo modulo .
Dữ liệu vào
Một dòng duy nhất chứa số nguyên là số đỉnh cần có.
Dữ liệu ra
In ra một số nguyên duy nhất là số cây thỏa mãn, lấy phần dư khi chia cho .
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 | 1 | Cây duy nhất thỏa mãn có gốc là , con trái của gốc là , con phải của gốc là , và con trái của là . Kiểm tra: và khác chẵn lẻ, và cùng chẵn lẻ, và khác chẵn lẻ. |
| 3 | 0 | Cây cân bằng hoàn hảo duy nhất với đỉnh có gốc là , hai con là và . Con phải khác tính chẵn lẻ với gốc nên cây không sọc. |
| 9 | 1 | Cây duy nhất có gốc là ; cây con trái gồm các khóa với gốc (con trái , con phải , con trái của là ); cây con phải gồm các khóa với gốc (con trái , con phải , con trái của là ). |
Bình luận