Kto da więcej? (Konkurs)

0

Weźmy np. liczbę 108, suma jej cyfr to 9
108 dzieli się przez 9 bez reszty, otrzymujemy 12
cuma cyfr to 3, 12 dzieli się przez 3 otrzymujemy 4
4/4=1
Czyli szukamy liczb, które dzielą się przez sumę swoich cyfr, a powstały iloraz też ma tą właściwość.
Powtarzanie doprowadzi nas do jedynki.

Kto powie ile jest takich liczb? A może jest ich nieskończenie wiele? Jeżeli nie to kto znajdzie największą?

msm
Administrator
  • Rejestracja:prawie 16 lat
  • Ostatnio:4 miesiące
0

Nie chcę mi się myśleć, ale strzelam że nieskończoność ;)

A wymyśliłem na poczekaniu tyle:
1, 2, 3, 4, 5, 6, 7, 8, 9 ( ;-P ) 12, 108.

edit: chyba jednak nieskończoność. Bo wystarczy udowodnić że dla każdej liczby istnieje inna liczba która podzielona przez sumę swoich cyfr da w wyniku tą liczbę. Nie chce mi się myśleć, ale to brzmi całkiem prawdopodobnie.

MW
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 9 lat
  • Postów:307
0

1-2-18-162-2916-78732-2125764-76527504-3443737680-185961834720-10041939074880-1001392206486108480
1-3-27-243-4374-118098-11802359826
1-4-12-108-1944-52488-1417176-141598557216
1-5-45-405-7290-196830-7085880-255091680-9183300480-916759703617920
1-6-54-972-97173756
1-7-21-378-3402-61236-1102248-110152051632
1-8-72-1296-23328-839808-83912775552
1-9-81-1458-13122-354294-12754584-459165024-24794911296-2474804891365056

na szybko na razie tyle znalazlem.

cyriel
  • Rejestracja:około 18 lat
  • Ostatnio:ponad 10 lat
0

x*10^a, gdzie a,x naleza do calkowitych? :> Jezeli nie wykluczamy podanych przez mnie przypadkow to oczywiscie istanieje nieskonczenie wiele takich liczb :)
mwili - liczyles w pamieci? ;P

btw - proste, ale fajne :) Daj wiecej takich zagadek :)


Pisze programy/skrypty na zlecenie/zaliczenie - c/c++/asembler/java. GG - 2100119, mail w profilu.
0
cyriel napisał(a)

x*10^a, gdzie a,x naleza do calkowitych? :> Jezeli nie wykluczamy podanych przez mnie przypadkow to oczywiscie istanieje nieskonczenie wiele takich liczb :)...

Na końcu musimy uzyskać jeden

cyriel napisał(a)

...btw - proste, ale fajne :) Daj wiecej takich zagadek :)

Jeszcze nie mamy rozwiązania

0
mwili napisał(a)

...
10041939074880-1001392206486108480
...

10041939074880 / 54 =
185961834720 / 54 =
3443737680 / 45 =
76527504 / 36 =
2125764 / 27 =
78732 / 27 =
2916 / 18 =
162 / 9 =
18 / 9 =
2 / 2 =
1 OK

ale 1001392206486108480 nie dzieli się przez 63

MW
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 9 lat
  • Postów:307
0

liczba 1 dzieli sie przez swoja sume czyli 1 ta z kolei dzieli sie przez swoja sume czyli 1. Biorac pod uwage ten przypadek to jest tych liczb nieskonczenie wiele ...
1-1-1-1-1-.... -1-.......
Czyli odpowiedz jest - nieskonczenie wiele. Co do reszty 8 przypadkow, bez dokladniejszej analizy ciezko mi powiedziec. No ale tego pierwszego przypadku nie wykluczyles ;)

CK
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 2 lata
  • Postów:2692
0

Powtarzanie doprowadzi nas do jedynki.

MW
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 9 lat
  • Postów:307
0

mozna to jakos tak zapisac

a0 = 1
a1 = c , gdzie 1< c < 9
a2 = a1sum(a2), gdzie sum(a2) to suma cyfr liczby a2 i (sum(a2) | a2)
a3 = a2
sum(a3), gdzie sum(a3) | a3
....
an = an-1 *sum(an), sum(an)|an

i tu trzeba udowdnic czy to idzie w nieskonczonosc lub nie. Nie wiem na razie jak ta zaleznosc matematycznie wyrazic.

0

Proponuję odmianę konkursu, znaleźć "liczbę Dobrowolskiego" dla której ciąg prowadzący do jedynki jest najdłuższy (lub udowodnić, że takiej liczby nie ma).

0

mwili@ dobry pomysł z tym liczeniem "od końca"
bo@ ciekwe czy mniejsza może dać dłuższy ciąg od większej. O! Trzeba to sprawdzić!

Liczby te mają już swoją nieformalną nazwę, to liczby Kornela.

FA
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 11 lat
0
mag.dobrowolski napisał(a)

ciekwe czy mniejsza może dać dłuższy ciąg od większej
Może dać, na przykład:
44641044 daje ciąg długości 8 (44641044 -> 1653372 -> 61236 -> 3402 -> 378 -> 21 -> 7 -> 1)
47829690 daje ciąg długości 7 (47829690 -> 1062882 -> 39366 -> 1458 -> 81 -> 9 -> 1)

0

A ja znalazłem dwie różne, które dają ciągi o tej samej długości
Niby nic, ale ich różnica ma 1432 cyfry :)

0

Swój program (C) zmieściłem w 100 wierszach, łącznie z arytmetyką do wielkich liczb.
Wydaj mi się, że mam wszystkie takie liczby (15095 sztuk, maksymalna to 1.084*10^1433), obliczenia zajmują około 30 sekund (PIII 1GHz).
Lecz gdy odejdę od systemu dziesiętnego, a za podstawę przyjmę np. 7, 11 albo 13 to brakuje mi cierpliwości by doczekać się na wyniki. Np. więcej niż 160 tys. dla podstawy 7. Ale w układzie piątkowym jest ich tylko 73.
Byłem ciekaw, czy ktoś wpadnie na jakiś dowcipny pomysł przyśpieszający obliczenia.
Chciałbym także zweryfikować swoje wyniki.

KR
Moderator
  • Rejestracja:prawie 21 lat
  • Ostatnio:2 dni
  • Postów:2964
0

Możesz coś więcej napisać o swojej metodzie?
Korzystałeś ze wzoru podanego przez mwili? (czyli od 1 mnożysz kolejno)?

0
Krolik napisał(a)

...(czyli od 1 mnożysz kolejno)?
Pewnie, że tak

KR
Moderator
  • Rejestracja:prawie 21 lat
  • Ostatnio:2 dni
  • Postów:2964
0

A liczysz w reprezentacji BCD czy o podstawie 2 i konwertujesz?
Potwierdzam, że w systemie piątkowym są 73 takie liczby...

W dziesiętnym za długo mi się liczy, ale pisałem kod na szybko i jeszcze nie optymalizowałem (ale zajmuje za to 6 linii). Zastanawiam się tylko, czy lepiej poprawić konwersję do base-10 na lepszy algorytm, czy lepiej liczyć od razu w BCD, wtedy suma cyfr jest trywialna do policzenia. I jeszcze jedno, do mnożenia używasz FFT, czy jedziesz Karatsubą? Niektóre te liczby są strasznie długie - zajmują po kilkanaście linijek w konsoli.

0

Trzeba sumować i liczyć cyfry więc zdecydowałem się na BCD, a nawet ABCDE (podstawa 10^5). Istotne bo 1 mnożenie zamiast 25.
FFT raczej nie pomoże, bo wszystkie mnożenia to WIELKA*słowo
A wielkie są, dla dziesiętnego doszedłem do 1343 cyfr.

Xitami
  • Rejestracja:ponad 20 lat
  • Ostatnio:około rok
0

Miało być oczywiście "1 mnożenia zamiast 5"

To że dobrą podstawą jest 10^5 mogłem określić dopiero po policzeniu do końca.
Liczba przez jaką się mnoży związana jest z długością iloczynu.
Doszedłem do 1434 cyfr, czyli podstawa < 2^32/(1434*9)

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 12 godzin
0

Czyli szukamy liczb, które dzielą się przez sumę swoich cyfr, a powstały iloraz też ma tą właściwość.
Powtarzanie doprowadzi nas do jedynki.

Drugie z pierwszego nie wynika ;]

Lepiej napisać: liczby Kornela to 1 oraz liczby, które podzielone przez sumę swoich cyfr, dają inną liczbę Kornela.

Spróbujcie rozłożyć je na czynniki pierwsze, może to coś da ;p

Jak na razie jedyne co widzę to to, że jeśli liczba jest podzielna przez 3 to suma jej cyfr też i jeśli pomnoży się ją przez jakąś liczbę to pozostanie podzielna przez 3. To samo można powiedzieć o podzielności przez 9.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
0

Podoba mi się ta definicja.
O dziewiątce wiem, ogólnie podstawa-1. Pozwala to robić znacznie dłuższe kroki.

lemmiwink
  • Rejestracja:prawie 15 lat
  • Ostatnio:prawie 12 lat
0

Troszkę się nad tym wczoraj zastanawiałem i doszedłem do wniosku, że szukanie kolejnych liczb na podstawie podanej sprowadza się do znalezienia wektora, który jest prostopadły do pewnego określonego wektora i składa się z liczb naturalnych mniejszych od 10:

daną liczbę b, którą można zapisać w postaci ciągu cyfr b0,b1,b2,...,bn. Znalezienie liczby, która wygenerowałaby podaną liczbę b sprowadza się do znalezienia takiej liczby a (a0,a1,a2,...,am), że:

sum (ai10i) = sum(ai) * [sum(bi10</sup>i)]

sum(bi*10^i) to oczywiście liczba b, więc zapis można uprościć:

sum (ai*10^i) = sum(ai) * b

Lewą i prawą sumę można przedstawić w postaci iloczynu skalarnego wektorów:

a = [a0 a1 ... am]
d = [1 10 100 ... 10^m] (ten wektor ma być pionowy)

oraz

b = [b b b ... b] - m liczb b (ten też ma być pionowy)

Mamy równanie:

ad = ab
ad - ab = 0
a(d - b) = 0

Jest to wzór na iloczyn skalarny wektorów - wektor d - b jest z góry ustalony, pozostaje tylko znaleźć wektor a.

Przykład: jaka jest liczba 4-cyfrowa, która wygeneruje liczbę 81 (?-81-9-1) ?

mamy: a = [a0 a1 a2 a3], d = [1 10 100 1000], b = [81 81 81 81]

a(d - b) = 0
[a0 a1 a2 a3] * ([1 10 100 1000] - [81 81 81 81])T = 0 (T - transpozycja)
[a0 a1 a2 a3] * [-80 -71 19 919]T = 0
-80a0 -71a1 + 19a2 + 919a3 = 0.

Jednym z rozwiązań jest a0 = 8, a1 = 5 a2 = 4 a3 = 1 czyli liczba 1458.

Pytanie brzmi: czy dla dowolnej liczby b można znaleźć m-cyfrowy ciąg a, który będzie spełniał powyższy warunek i który będzie przedstawiał liczbę?

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)