Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024
Problem description
Jasio jest wielkim entuzjastą matematyki. Jak każdy szanujący się matematyk, ma on swoją ulubioną liczbę całkowitą dodatnią N. W wolnych chwilach często zapisuje ją na kartce pod różnymi postaciami aby podziwiać jej majestat. Najwspanialszą postacją liczby jest oczywiście jej zapis w systemie binarnym. Ulubioną czynnością Jasia jest zmienianie kolejności cyfr w zapisie binarnym liczby N, rodząc w ten sposób nowe, nigdy wcześniej niezbadane liczby.
Ponad wszystko Jasio ceni sobie piękno kwadratów liczb całkowitych. Ilekroć otrzymana w procesie przestawiania bitów liczba okazuje się być kwadratem, Jasia ogarnia nieziemska rozkosz. Chciałby on ustalić, ile spośród możliwych do uzyskania liczb należy do cudownej rodziny kwadratów. Kunszt matematyczny Jasia oczywiście nie pozwala mu podczas przestawiania bitów na stworzenie liczby z zerami wiodącymi. Przykładowo, dla N = 69 = 10001012 może on uzyskać 10100012 = 92 oraz 11001002 = 102, ale nie 01100012 = 72.
Napisz program, który wczyta liczbę N i wypisze, ile różnych kwadratów liczb całkowitych można otrzymać poprzez zamianę kolejności cyfr w jej zapisie binarnym.
Wejście
W pierwszym i jedynym wierszu wejścia znajduje się liczba całkowita N.
Wyjście
Twój program powinien wypisać jeden wiersz zawierający jedną liczbę całkowitą – ile różnych kwadratów liczb całkowitych można otrzymać poprzez zamianę kolejności cyfr w zapisie binarnym liczby N.
Ograniczenia
1 ≤ N ≤ 1018.
Przykład
Wejście | Wyjście | Wyjaśnienie |
|
|
Jedynym możliwym do uzyskania kwadratem jest sama liczba N = 32. |
Wejście | Wyjście | Wyjaśnienie |
|
|
Przykład opisany powyżej. |
Wejście | Wyjście | Wyjaśnienie |
|
|
N = 101001110012. Możliwymi do uzyskania kwadratami są 101010110012 = 372 oraz 110111001002 = 422. |