Szukając tysiąca

Znajoma znajomej ma syna. Syn ma lat dziewięć, w związku z czym uczęszcza do szkoły. W szkole uczy się między innymi matematyki. No i trafił na takie dość zaawansowane (jak na dziewięciolatka) zadanie:

Używając cyfr 1-9, utwórz trzy liczby trzycyfrowe, których suma wynosi 1000. Każdej cyfry można użyć tylko raz.

Ponieważ chłopak nie bardzo wiedział jak to ugryźć, zagaił do rodziców po pomoc. Rodzice ugrzęźli, więc rozpuścili wici po znajomych. Wreszcie zadanko trafiło do mnie. Zacząłem kombinować. Najpierw wyszło mi, że ilość możliwych kombinacji idzie w miliony, a więc w najgorszym razie dałoby się to zasymulować w SQL-u (ot, wygenerować wszystkie permutacje i odfiltrować te, które dają sumę inną niż 1000). Ale, pomyślałem sobie, przecież nie każą dziewięciolatkowi instalować SQL Servera dla jednego zadanka. A więc można prościej.

Rozpisałem sobie wszystkie możliwe kombinacje ostatnich cyfr tych liczb trzycyfrowych tak, żeby na końcu wyszło zero. A więc: (1,2,7), (1,3,6) i tak dalej aż do (9,8,3).

Potem pomyślałem, że dla każdej z tych kombinacji znajdę kombinacje drugich cyfr, żeby na drugim miejscu od końca też wyszło zero. Powinno ich być dużo mniej, bo trzy już są zużyte. Ale jednak za dużo bazgraniny z tego wyszło, więc wziąłem się na sposób:

Rozpisałem sobie wszystkie cyfry, w grupach po trzy, o tak:

123 456 789

Dodałem je. Wyszło więcej niż 1000. Zacząłem przestawiać cyfry między liczbami aż doszedłem do wariantu dającego w sumie 999.

I tu mnie olśniło.

Przecież skoro udało mi się ułożyć sumę 999, która dzieli się przez trzy, to każda inna suma też będzie dzielić się przez trzy. Przecież 1+2+3+4+5+6+7+8+9 dzieli się przez trzy. A tysiąc przez trzy się nie dzieli.

A więc zmarnowałem sporo czasu na bezużyteczne rozważania…

Tak czy siak, założyłem, że w treści zadania był błąd, i że tam miało być „dziewięć wybranych cyfr” a nie „wszystkie cyfry od 1 do 9”.

Przy takim założeniu, należy usunąć jedną z cyfr z zestawu, a z pozostałych ułożyć trzy liczby zgodnie z warunkami zadania.

Pytanie: co usunąć?

Na pewno nie trójkę, szóstkę ani dziewiątkę, bo to nie zmieni w żaden sposób podzielności przez trzy. Skoro 1000 mod 3 = 1, trzeba tę „resztową” jedynkę jakoś „dodać”, a więc trzeba usunąć cyfrę, która daje w dzieleniu przez trzy resztę dwa (w efekcie, sumowanie będzie zawsze dawało wynik dzielący się przez trzy z resztą jeden, a więc będzie szansa na uzyskanie równego tysiąca).

W ten sposób kombinując, uzyskałem listę cyfr 0,1,2,3,4,5,6,7,9 (wyrzuciłem ósemkę), a następnie, metodą prób i błędów, znalazłem: 263+197+540=1000.

Oczywiście cyfry można zamieniać między tymi liczbami, pod warunkiem, że nie zmienimy ich pozycji w liczbie. A więc: 163+297+540, 293+167+540, 260+197+543 i tak dalej.

Prawdopodobnie da się też rozwiązać zadanie wywalając dwójkę albo piątkę (zamiast ósemki). Na to już mi nie starczyło samozaparcia 🙂

Odmaszerowuję do zmywaka.

Autor: xpil

Po czterdziestce. Żonaty. Dzieciaty. Komputerowiec. Krwiodawca. Emigrant. Rusofil. Lemofil. Sarkastyczny. Uparty. Mól książkowy. Ateista. Apolityczny. Nie oglądam TV. Uwielbiam matematykę. Walę prosto z mostu. Gram na paru instrumentach. Lubię planszówki. Słucham bluesa, poezji śpiewanej i kapel a’capella. || Kliknij tutaj po więcej szczegółów ||

Dodaj komentarz

7 komentarzy do "Szukając tysiąca"

Powiadom o
avatar
Sortuj wg:   najnowszy | najstarszy | oceniany
Teo
Gość

dziękuję że jak zwykle mogłam na ciebie liczyć – w takich logicznych zadaniach :):)

idę linka podesłac mamie tego chłopca;)

B
Gość
🙂 a ja myslalem w ten sposob: Skupiajac sie na sumach liczb – wszystkie liczby od 1 do 9 to w sumie 45. Liczac w slupkach trzy 3cyfrowe liczby dodajemy je od prawej wiec mamy slupek prawy srodkowy i lewy Prawy slupek musi miec 10 lub 20 w sumie, Srodkowy moze miec 9 (jedynka przechodzi z prawego slupka jesli bylo 10) lub 18 (jesli w prawym bylo 20) a lewy 8 lub 9 (w zaleznosci od slupka srodkowego) Mamy takie kombinacje sum slupkow zeby wyszedl 1000: L S P 9 9 10 w sumie 28 8 19 10 w sumie… Więcej »
Butter
Gość

trochę inne podejście [a dokładniej trop]

Na pozycji jedności powinny znajdować się cyfry, których suma mod 10 = 0:

Na pozycji dziesiątek suma cyfr mod 10 ma się równać 9 przy czym cyfry nie występują na pozycji jedności

xpil
Gość

"Na pozycji dziesiątek suma cyfr mod 10 ma się równać 9" – a czemu tak?

Butter
Gość
No dobra [po sprawdzeniu] – 9 lub 8 [8,7,5] Generalnie – po wykonaniu kodu: with licz as( select 0 [x] union all select x+1 from licz where x<9 ) , jed as ( select l1.x a, l2.x b, l3.x c, (l1.x+ l2.x + l3.x)/10 suma_jed, convert(char(1), l1.x)+ convert(char(1), l2.x) + convert(char(1), l3.x) str_jed from licz l1, licz l2, licz l3 where (l1.x+ l2.x + l3.x) %10 =0 and l1.x l2.x and l1.x l3.x and l2.x l3.x) –select * from jed order by suma_jed; , dzie as ( select l1.x d, l2.x e, l3.x f, (l1.x+ l2.x + l3.x+jed.suma_jed)/10 suma_dzie, convert(char(1),… Więcej »
valdie68
Gość

Czy aby 400+500+100 nie wystarczy?

valdie68
Gość

Nie zauważyłem, że tylko raz można użyć cyfry. Zakładam, ze to zmodyfikowana wersja zadania.

wpDiscuz