Twoim zadaniem jest przyjmowanie tej liczby jako danych wejściowych (chociaż powinna również działać z dowolną inną liczbą):
18349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957
i znajdź najmniejszy okres, który jest w tym przypadku:
1834957034571097518349570345710975183495703457109751834957034571097518349570345710976
Powodzenia i miłej zabawy!
Wyjaśnienia :
- Numer wejściowy ma co najmniej jeden okres i jeden okres częściowy
- Okres zaczyna się zawsze na początku numeru wejściowego
- Kropka oznacza w tym przypadku ciąg liczb, który się powtarza.
>
niewłaściwy sposób.Odpowiedzi:
CJam,
2016 bajtówCzyta ze STDIN. Wypróbuj online.
Powyższy kod będzie wymagał pamięci O (n 2 ) , gdzie n jest długością wejścia. To będzie pracować z 2 16 cyfr, tak długo, jak masz wystarczająco dużo pamięci.
Można to ustalić kosztem pięciu dodatkowych bajtów:
Przykładowy przebieg
Jak to działa
W przypadku wprowadzania Q chodzi o powtórzenie pierwszych znaków len (Q) razy i sprawdzenie, czy indeks Q w wyniku wynosi 0. Jeśli nie, powtórz pierwsze dwa znaki len (Q) razy itp.
źródło
Regex (smak .NET),
2322 bajtówSpowoduje to dopasowanie wymaganego okresu jako podłańcucha.
Sprawdź to tutaj.
Jak to działa?
źródło
aabaabaab
Prawdopodobnie pasuje,a
ponieważ się powtarza. Nie znalazłem jeszcze sposobu na rozwiązanie tego w PCRE. Dennis wypróbował już usuniętą odpowiedź, ale ta też nie działała w pełni. Btw, nie potrzebujeszg
.Python 60
s
to ciąg cyfrna przykład:
źródło
Pyth , 14 znaków
Wyjaśnienie:
Zasadniczo generuje wszystkie początkowe sekwencje danych wejściowych, powtarza się za każdym
len(z)
razem i sprawdzaz
, czy dane wejściowe mieszczą się w wynikowym ciągu znaków.To nie jest prawidłowa odpowiedź, ale ostatnio została dodana funkcja do Pytha, po zadaniu pytania, która umożliwia rozwiązanie 12 znaków:
Używa to funkcji filtrowania na liczbach całkowitych.
źródło
Japt , 8 bajtów
Spróbuj
-2 bajty dzięki Shaggy!
Wyjaśnienie JS:
źródło
å+ æ@¶îX
Java 8, 125 bajtów
Pobiera dane wejściowe jako ciąg znaków, ponieważ nie ma rozsądnego sposobu reprezentowania ponad 1000 cyfr w Javie innych niż ciąg znaków (proszę nie BigInteger).
Wypróbuj online!
źródło
String
var. -3 bajty