Fórum Root.cz
Ostatní => Odkladiště => Téma založeno: David98 17. 06. 2016, 21:30:48
-
Kolik je mezi lety 2001 až 3000 letopočtů dělitelných třemi. Radši se ptám, ale myslím si že stačí rozdíl vydělit třemi.
-
Možná ano, ale nebral bych to jako jistotu. Kolik je čísel dělitelných třemi např. mezi 3 a 9? (9-3)/3=2, ale to je špatná odpověď.
-
Není to typický příklad, jako je 5 pouličních lamp, kolik je mezi nimi mezer? Vždy si to raději maluju... :)
-
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
-
Už jenom pouhý letmý pohled na zadání by tě měl utvrdit v tom, že to nebude tak jednoduché. Protože pak by jich musel být stejný počet mezi lety 1001 a 2000 a mezi lety 2001 a 3000, což zjevně není (v případě, že se zahrnují i krajní meze, což z tvého zadání jasně nevyplývá).
-
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
-
Možná ano, ale nebral bych to jako jistotu. Kolik je čísel dělitelných třemi např. mezi 3 a 9? (9-3)/3=2, ale to je špatná odpověď.
Mas recht, mezi 3 a 9 je pouze 6.
-
Osobně bych to řešil kombinatorikou. Dělitelnost třemi je právě tehdy, je-li ciferný součet dělitelný třemi. Stačí tak najít kombinace dělitelné třemi a ty permutovat v patřičných mezích.
-
Kolik je mezi lety 2001 až 3000...
Takže v letech 2002..2999? A vydělit třemi to určitě nestačí.
-
podobny
https://projecteuler.net/problem=1 (https://projecteuler.net/problem=1)
akorat u tohodle odecist zacatek, zkontrolovat/upravit krajni meze, vydelit 3, soucet ciselne rady. trivos ;)
-
A vydělit třemi to určitě nestačí.
Protože čísla 3000 a 2001 jsou dělitelná třemi, stačí jejich rozdíl vydělit třemi a odečíst jedničku: (3000 - 2001) / 3 - 1
-
Jde o obyčejnou aritmetickou posloupnost: a1=2004, d=3, an=2997. Snadno odvoditelný vzoreček an=a1+(n-1).d vás dostane po dosazení 2997 = 2004 + (n-1).3 do kýženého uspokojení... n=(2997-2004)/3 + 1.= 332 ;-)
-
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Já mám většinou pocit uspokojení z toho, že celý program funguje, a moc neřeším, jak (ne)elegantním způsobem jsem k tomu došel.
Samozřejmě kdyby těch čísel nebylo tisíc, ale miliarda, nebo by se to počítalo opakovaně, tak se nad tím taky zamyslím a vyřeším to „správně“. Když ale jednorázově něco takového potřebuju, tak je prostě nejrychlejší napsat za necelou minutu ten oneliner.
-
Aritmetické posloupnosti se dají pěkně zapisovat v perlu 6.
perl6 -e 'say +(2004, 2007 ... 2997)'
perl6 -e 'say +(2004, * + 3 ... 2997)'
perl6 -e 'say +(2004, 2007 ...^ 3000)'
-
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Já mám většinou pocit uspokojení z toho, že celý program funguje, a moc neřeším, jak (ne)elegantním způsobem jsem k tomu došel.
Samozřejmě kdyby těch čísel nebylo tisíc, ale miliarda, nebo by se to počítalo opakovaně, tak se nad tím taky zamyslím a vyřeším to „správně“. Když ale jednorázově něco takového potřebuju, tak je prostě nejrychlejší napsat za necelou minutu ten oneliner.
To je jako když děcka v první třídě počítají na prstech. To mě moc neuspokojuje :o
-
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Já mám většinou pocit uspokojení z toho, že celý program funguje, a moc neřeším, jak (ne)elegantním způsobem jsem k tomu došel.
Samozřejmě kdyby těch čísel nebylo tisíc, ale miliarda, nebo by se to počítalo opakovaně, tak se nad tím taky zamyslím a vyřeším to „správně“. Když ale jednorázově něco takového potřebuju, tak je prostě nejrychlejší napsat za necelou minutu ten oneliner.
To je jako když děcka v první třídě počítají na prstech. To mě moc neuspokojuje :o
Tak třeba ruční počítání příkladů z lineární algebry ve škole byla otrava. S použitím počítače by ten předmět byl mnohem zajímavější. Na ověřování výsledků počítačem není nic špatného. Teorii to nenahradí, ale někdy to může přispět k lepšímu pochopení.
-
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Já mám většinou pocit uspokojení z toho, že celý program funguje, a moc neřeším, jak (ne)elegantním způsobem jsem k tomu došel.
Samozřejmě kdyby těch čísel nebylo tisíc, ale miliarda, nebo by se to počítalo opakovaně, tak se nad tím taky zamyslím a vyřeším to „správně“. Když ale jednorázově něco takového potřebuju, tak je prostě nejrychlejší napsat za necelou minutu ten oneliner.
To je jako když děcka v první třídě počítají na prstech. To mě moc neuspokojuje :o
Tak třeba ruční počítání příkladů z lineární algebry ve škole byla otrava. S použitím počítače by ten předmět byl mnohem zajímavější. Na ověřování výsledků počítačem není nic špatného. Teorii to nenahradí, ale někdy to může přispět k lepšímu pochopení.
Já nic o tom, že to je špatné naříkal. Já psal, že to je neuspokojivé. Chtělo by to číst pořádně ;)
-
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Já mám většinou pocit uspokojení z toho, že celý program funguje, a moc neřeším, jak (ne)elegantním způsobem jsem k tomu došel.
Samozřejmě kdyby těch čísel nebylo tisíc, ale miliarda, nebo by se to počítalo opakovaně, tak se nad tím taky zamyslím a vyřeším to „správně“. Když ale jednorázově něco takového potřebuju, tak je prostě nejrychlejší napsat za necelou minutu ten oneliner.
To je jako když děcka v první třídě počítají na prstech. To mě moc neuspokojuje :o
Tak třeba ruční počítání příkladů z lineární algebry ve škole byla otrava. S použitím počítače by ten předmět byl mnohem zajímavější. Na ověřování výsledků počítačem není nic špatného. Teorii to nenahradí, ale někdy to může přispět k lepšímu pochopení.
Já nic o tom, že to je špatné naříkal. Já psal, že to je neuspokojivé. Chtělo by to číst pořádně ;)
Ok, omlouvám se. Každého uspokojuje něco jiného.
-
Myslím, že by to mohlo být něco jako:
(B -(A-1) +MOD(A-1, 3) -MOD(B, 3))/3
MOD je modulo (zbytek po dělení).
Edit: posunuto A o jedna, aby to bylo jako interval uzavřený
-
Myslím, že by to mohlo být něco jako:
(B -(A-1) +MOD(A-1, 3) -MOD(B, 3))/3
MOD je modulo (zbytek po dělení).
Edit: posunuto A o jedna, aby to bylo jako interval uzavřený
to není správně
(b -1) / 3 - a / 3
kde / je celočíselné dělení
mi přijde jednodušší
-
Pravdu mas, jdu na to asi prilis slozite a chova se to navic jako (A,B>
-
Myslím, že by to mohlo být něco jako:
(B -(A-1) +MOD(A-1, 3) -MOD(B, 3))/3
MOD je modulo (zbytek po dělení).
Edit: posunuto A o jedna, aby to bylo jako interval uzavřený
pokud se počítají jen čísla mezi, bez těch okrajových čísel tak by to ten vzorec měl být
((B - 1) - A +MOD(A, 3) -MOD(B - 1, 3))/3
-
Pravdu mas, jdu na to asi prilis slozite a chova se to navic jako (A,B>
Jdeš na to správně. Ten tvůj vzorec funguje i bez celočíselného dělení. Okrajové body jsou z toho zadání nejasné.