Hãy tưởng tượng một số khối mà chúng ta có thể cắt thành các khối nhỏ hơn mà không cần các mảnh còn lại.
Tìm xem có bao nhiêu hình khối có thể được cắt.
Ví dụ, một khối có thể được cắt thành 8, 27 (rõ ràng là lũy thừa thứ 3 của số nguyên) và 20 (19 khối nhỏ cộng với một tám lần kích thước của các khối khác, xem hình ảnh).
Xem ở đây một số trợ giúp: http://mathworld.wolfram.com/CubeDissection.html
Chương trình nên lấy số nguyên đầu vào n
( 0 <= n <= 1 000
) và in tất cả các số nhỏ hơn hoặc bằng để n
có thể cắt một khối lập phương thành số khối đó. Giả sử rằng khối có thể được cắt thành 1 khối và không thể thành 0 khối.
Bạn chỉ có thể sử dụng các kiểu dữ liệu tích hợp (không có mảng, đối tượng, v.v.) có kích thước không lớn hơn 64 bit. Mã ngắn nhất sẽ thắng.