Liczby trunkowe
Postanowiłem uogólnić owczo-baranie zadanie z poprzedniego wpisu. Pozostanę zatem jeszcze chwilę wśród łamigłówek algorytmicznych, czyli takich, których gruntowne rozgryzienie bez komputera jest praktycznie niemożliwe lub bardzo żmudne. Ciekawa, obszerna i stale rosnąca kolekcja takich problemów i problemików, najczęściej obliczeniowych, dostępna jest na Project Euler. To strona należąca do najpopularniejszych wśród adeptów programowania, traktowana jako zbiór znakomitych ćwiczeń. Niektóre z zamieszczonych na niej zadań można jednak i warto nadgryzać bez komputera. Możliwa do napoczęcia „na piechotę” jest również poniższa łamigłówka, wzorowana na owczo-baraniej.
Dany jest iloczyn liczb naturalnych:
a * b = c
a to liczba n-cyfrowa,
b to najmniejsza – dla danego a – taka liczba, że c składa się z jednakowych cyfr.
Proszę znaleźć największe b dla danego n. Inaczej mówiąc, należy wybrać największy mnożnik spośród najmniejszych znalezionych dla wszystkich n-cyfrowych a, gdy n jest ściśle określone.
Oczywiście, nie dla każdej mnożnej istnieje taki mnożnik, aby iloczyn składał się z jednakowych cyfr. Najłatwiej zauważyć, że odpadają mnożne zakończone zerem.
Dla n = 1 sprawa jest trywialna: b = 1 dla każdego a.
Dla n = 2 można pogłówkować bez programowania, ale przyda się kalkulator.
Na starcie wypada wykreślić wszystkie a złożone z dwóch jednakowych cyfr, bo dla nich b = 1. Odpadnie też sporo takich, które dla żadnego całkowitego b nie dadzą c – poza zakończonymi zerem będą to na przykład niektóre liczby pierwsze oraz zakończone piątką. Być może właśnie wśród nich – ale tych, które nie odpadną – ukrywa się największe b. Sprawdzając na przykład liczby 2-cyfrowe z piątką z prawej strony szybko wpada się na duże b = 15873 dla a = 35 (35 * 15873 = 555555).
Czy wśród pozostałych dwucyfrowych liczb ukrywa się a z większym b? Pytanie jest „prowokacyjne”, bo nietrudno ustalić, że tak. W ogóle, wydaje się, że znalezienie największego b dla n = 2 nie wymaga korzystania z komputera, tzn. można wpaść na pomysł gwarantujący umiarkowanie wyboistą drogę do celu. A jakie są rozwiązania dla większych n? To już jest pytanie do programistów.
Liczba złożona z jednakowych cyfr określana jest w niektórych językach z angielska – repdigit. Dla odmiany nazwa niemiecka pachnie alkoholem 🙂 – schnapszahl (zagadka: dlaczego?). Propozycje polskiego określenia, niekoniecznie trunkowe, będą mile widziane.
Komentarze z prawidłowymi rozwiązaniami uwalniane są wieczorem w przeddzień kolejnego wpisu. Wpisy pojawiają się co 3-4 dni.
Komentarze
Z tego, co wiem Schnapszahl (w niemieckim wszystkie rzeczowniki zaczynają się od dużej litery) ma rzeczywiście trunkowy charakter, czy może wręcz trunkowe źródło. Pamiętam, że przy zatrzymywaniu samochodu znajomi z Niemiec patrzyli na końcówkę licznika kilometrów i gdy były tam powtarzające się cyfry, mówili właśnie „Schnapszahl”, co miało oznaczać, że jest to okazja, żeby się napić.
Dotychczas łamigłówki na tym blogu miały eleganckie rozwiązania, natomiast już dla liczby pięciocyfrowej i to w konkretnej formie BARAN, rozwiązanie ma kilkadziesiąt (>=80) tysięcy cyfr. Nawet jak ktoś to zamieści, to zapewne niewielu przeczyta choć kilka cyfr takiego rozwiązania, nie mówiąc o jego weryfikacji.
Tak podejrzewałem, niestety. Chyba już dla n=3 to gehenna dla komputera.
Może ciekawsze i bardziej eleganckie byłoby, ograniczając się do n=2, znaleźć początek ciągu liczb, które nie są dzielnikami „liczb trunkowych”.
mp
Chodzi o liczby, które nie dzielą „liczb trunkowych” mających dzielnik dwucyfrowy?
Niezupełnie; chodzi o liczby dwucyfrowe, które nie są dzielnikami żadnej liczby trunkowej. Podaję początek ciągu: 10, 16,
17, 20, 25… Kto da więcej? Uprzedzam, że tego ciągu nie ma w Encyklopedii Ciągów Liczbowych.mp
Panie Marku, dlaczego liczba 17 należy do poszukiwanego ciągu? Skoro
17 * 588235294117647 = 9999999999999999, to 17 dzieli pewną liczbę trunkową.
Ups… faktycznie, mea culpa. To upraszcza sprawę.
mp
PS zamiast dziewiątek mogą być jedynki, będzie mniejsze b.
Krótki programik zwrócił mi następujące wyniki:
10,16,20,25,30,32,40,48,50,60,64,70,75,80,90,96
Ciąg ten znajduje się w encyklopedii:
http://www.research.att.com/~njas/sequences/A083118
Jeśli nie popełniłem żadnego błędu to dla:
n = 2: b = (10^96 – 1)/(97*9). Wówczas 97 * b składa się z 96 jedynek.
n = 3: b = (10^982 – 1)/(983*9). Wówczas 983 * b składa się z 982 jedynek.
n = 4: b = (10^9966 – 1)/(9967*9). Wówczas 9967 * b składa się z 9966 jedynek.
Dalej mi się nie chce 🙂
Szkoda, że tak brzmi zadanie, bo sposób na jego rozwiązanie umieściłem w komentarzu pod poprzednią łamigłówką.
10,16,20,25,30,32,40,48,50,60,64,70,75,80,90,96
Szanowny Panie!
Słowo „Schnapszahl” jest słowem zakorzenionym głęboko historycznie i ma pochodzenie towarzyskie czyli socjalne. Towarzystwo spędzające czas w knajpie często grywa np. w rzucanie kości. Ten, któremu zdarzy się wyrzucić taką liczbę, stawia wszystkim kolejkę wysokoprocentowej żytniówki (kartofli jeszcze nie znano), zwanej „Schnaps”. To tylko przykład.
Nie dziwię się, że nie zna Pan słowa bo w Polsce łatwiej w knajpie zarobić za darmo po twarzy i do twarzy. A pojęcie towarzystwa obejmującego wszystkich gości knajpy chyba nie istnieje.
Pozdrawiam