Zdefiniowaliśmy już tutaj numer składany .
Ale teraz zdefiniujemy Super Folding Number. Super składana liczba to liczba, która po złożeniu wystarczającej liczby razy ostatecznie osiągnie jeden mniej niż potęgę dwóch. Metoda składania jest nieco inna niż w pytaniu liczby składanej.
Algorytm składania składa się w następujący sposób:
Weź reprezentację binarną
np. 5882
1011011111010
Rozlano go na trzy partycje. Pierwsza połowa, ostatnia połowa i środkowa cyfra (iff ma nieparzystą liczbę cyfr)
101101 1 111010
Jeśli środkowa cyfra to zero, liczby tej nie można złożyć
Odwróć drugą połowę i nałóż na pierwszą połowę
010111 101101
Dodaj cyfry na miejscu
111212
- Jeśli w wyniku są jakieś 2, liczby nie można złożyć, w przeciwnym razie nowa liczba jest wynikiem algorytmu składania.
Liczba jest liczbą super składaną, jeśli można ją złożyć do ciągłego ciągu jedności. (Wszystkie numery składane są również liczbami super składanymi)
Twoim zadaniem jest napisanie kodu, który pobierze liczbę i wyświetli prawdziwą wartość, jeśli liczba jest liczbą Super Folding, a fałszem w przeciwnym razie. Zostaniesz oceniony na podstawie wielkości twojego programu.
Przykłady
5200
Konwertuj na binarny:
1010001010000
Podziel na pół:
101000 1 010000
Środek jest jeden, więc kontynuujemy Nałóż połówki:
000010
101000
Dodano je:
101010
Bez dwójki, więc dzielimy dalej na pół:
101 010
Zagięcie:
010
101
111
Wynik to 111
(7 po przecinku), więc jest to liczba super składana.
Przypadki testowe
Pierwsze 100 super składanych liczb to:
[1, 2, 3, 6, 7, 8, 10, 12, 15, 20, 22, 28, 31, 34, 38, 42, 48, 52, 56, 63, 74, 78, 90, 104, 108, 120, 127, 128, 130, 132, 142, 150, 160, 170, 178, 192, 204, 212, 232, 240, 255, 272, 274, 276, 286, 310, 336, 346, 370, 400, 412, 436, 472, 496, 511, 516, 518, 524, 542, 558, 580, 598, 614, 640, 642, 648, 666, 682, 704, 722, 738, 772, 796, 812, 852, 868, 896, 920, 936, 976, 992, 1023, 1060, 1062, 1068, 1086, 1134, 1188, 1206, 1254, 1312, 1314, 1320, 1338, 1386, 1440, 1458, 1506, 1572, 1596]
3
wkradł się do przypadków testowych? Nie widzę, jak można go złożyć, ponieważ dzieli się na1 1
, dając natychmiast2
. A może mówisz, że składanie go zero razy też się liczy?