Poniższy problem został zadany w wywiadzie. Biorąc pod uwagę liczbę 11 n (gdzie n
∈ [0, 1000]
), uzyskaj w wyniku liczbę 1
. Na przykład, n = 3, 11 = 1331, a więc oczekuje się, że wynik podano lub 2. n = 6, 11 = 1771561, oczekiwany wynik byłby 3.Oblicz liczbę z nich w wyniku 11^n
My pierwsza myśl była że musiało coś zrobić z pascal's triangle i binomial coefficients (ponieważ, jak wiemy, po prostu obliczanie pow(11, 1000)
nie działa, przynajmniej w C).
Pomyślałem, że proste powtarzanie kolumn w trójkącie paskowym powinno dać mi wynik, ale to oczywiście nie działa.
Tak więc utknąłem w tej chwili. Moja następna myśl polegała na użyciu pewnego rodzaju bignum library
, aby rozwiązać problem, ale moim zdaniem musi istnieć inny sposób rozwiązania tego rodzaju zadania.
Aktualizacja Zapomniałem wspomnieć, że miałem rozwiązać to zadanie za pomocą C/Objective-C.
Nie potrzeba żadnego bignum bibliotekę pomnożyć przez 11 :-) –
Python można policzyć '1's w' 11^100000' w około '2.09s', więc dla swoich ograniczeń, biblioteka bignum powinna działać. Nie sądzę, że istnieje jakiekolwiek analityczne rozwiązanie tego problemu. – Blender
Brzmi jak świetny kandydat do wstępnego przetwarzania. – cheeken