Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 14. 02. 2011 23:40

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Dělitelnost čísel od 1 do 1000

potřeboval bych poradit jak zjistit jestli číslo délky až 20 je dělitelné 1 až 1000 (tuto část výpočtu potřbuji do KSP... bez toho se bohužel asi nehnu:( jelikož neznám v céčku žádný tip, který by mohl mít maximální velikost 9*10^19 + 9*10^18...+9)

hledal jsem na wikipedii tam jsem našel pro čísla 1-18 pak 20, 30, 40, 50, 100 a 1000

dokone tam i píší nějaké obecné kriterium, ale tomu jsem vážně neporozumněl.... díky moc za rady

Offline

  • (téma jako nevyřešené označil(a) VojtechSejkora)

#2 15. 02. 2011 01:14

Tlacenka
Místo: Brno
Příspěvky: 52
Reputace:   
 

Re: Dělitelnost čísel od 1 do 1000

↑ VojtechSejkora: No v tom cecku by to urcite slo udelat a vyzkousel bych to prubnout asi prez string kde neni problem nadefinovat si pole o velikost [20+1] k tomu bych udelal nejakej cyklus treba FOR no do toho dat nejakou podminku kdyz je delitelny tak neco udelej kdyz ne tak testuj dal nez dojdu k treba te 1000.

Mohl bych to tu rozepsat vic nebo ten program i udelat ale nejsem si uplne jist jestli sem pochopil uplne presne zadani. Jde o to ze uzivatel zada az 20 mistne cislo a ten program by mel vypsat jestli je delitelny 1,2,3...1000 ?? a pro kazde toto cislo vypise: Jsem delitelny jednickou, Nejsem delitelny dvojkou atd. ? Omluvte kdyztak moji nechapavost ale sem utahanej jak pes :),. Kdyztak to tu rozvedte jestli muzete nebo sem hodte i ten vas kod v C pokud teda chcete to totim smerem resit :).


Nejsem dokonalý a i já dělám chyby z kterých se holt učim.

Offline

 

#3 15. 02. 2011 13:03

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: Dělitelnost čísel od 1 do 1000

↑ Tlacenka:
tak to bych asi taky zvládl... mě šlo spíše o to že jsem chtěl (jelikož mám jednotlivé cifry toho čísla) zjistit jestli je daným číslem dělitelný nebo ne (a na vstupu dostanu počet míst a jakým číslem to má být dělitelné a mám vypsat čísla, která při zadané délce jsou dělitelné tím zadaným číslem)

a žádnej program nepiš... to by moc nemělo pak smysl:)


spíše by mě zajímalo jestli někdo pochopil z wiki toto:

Obecné kritérium dělitelnosti

Libovolné kritérium dělitelnosti lze zapsat jako ciferný součet s vahami — číslo x je dělitelné prvočíslem n právě když Σk αkak je dělitelné n, kde x   =   a0 + 10a1 + 100a2 + 1000a3 + …+10nan, neboli je zapsáno v poziční soustavě se základem 10.

Jednotlivé váhy v ciferném součtu jsou řešení jednoduchých kongruencí $\alpha_k \equiv 10^k\,(mod\ n)$. Řešení jsou tedy zbytky po dělení $10^k/n$.

Například číslo x je dělitelné 17 právě když a0 − 7a1 − 2a2 − 3a3 + 4a4 + 6a5 − 8a6 + 5a7 − a8 + 7a9 + 2a10 + 3a11 − 4a12 − 6a13 + 8a14 − 5a15 + a16 … je dělitelné 17.

a jestli je správné.... a kdyby mi to někdo mohl vysvětlit jak to tam myslí

Offline

 

#4 15. 02. 2011 13:07

FailED
Příspěvky: 1255
Reputace:   42 
 

Re: Dělitelnost čísel od 1 do 1000

Offline

 

#5 15. 02. 2011 15:29

vojta01
Příspěvky: 63
Reputace:   
 

Re: Dělitelnost čísel od 1 do 1000

Ahoj, také řeším KSP a problémy spojené s touto úlohou :(
Zadané číslo může být maximálně 19-ti místné, nikoliv 20 místné!
Zkus požít typ unsigned long long int, což je beznaménkové číslo v rozsahu 0 až 2^64-1, což ti pokryje 18 řádů a s devatenáctým řádem si již určitě nějak poradíš, popř. nezískáš plný počet bodů.

Offline

 

#6 15. 02. 2011 19:26

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Dělitelnost čísel od 1 do 1000

↑ VojtechSejkora:
K tomu obecnemu na wiki - napriklad pro tech 17 pri desitkovem zakladu:
a0, a1, a2 ... jsou ty cifry

1 deleno 17 da zbytek 1, takze proto 1*a0
10 deleno 17 da zbytek 10, takze dalsi clen muze byt treba 10*a1, ale vzhledem k delitenosti je to stejne jako -7*a1 (rozdil tech koeficientu je 17, mohlo by tam byt treba i -24*a1 nebo 27*a1 atd. Tipuju, ze protoze -7 je blize nule nez nez 10, tak se tam dava tech -7 aby to byly mensi cisla, to same pro ty dalsi cleny)
100 deleno 17 da zbytek 15, takze dalsi clen 15*a2 nebo -2*a2
1000 deleno 17 da zbytek 14, takze -3*a3
atd...

(nevim, jestli tohle je to, co ti neni jasne)

Offline

 

#7 19. 02. 2011 12:50

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: Dělitelnost čísel od 1 do 1000

↑ Lumikodlak:
aha díky přesně to mi nebylo jasné:D takže tam dávají bližší k nule a + nebo - ... ok tak dík... teď už to konečně chápu

Offline

 

#8 19. 02. 2011 14:08 — Editoval VojtechSejkora (19. 02. 2011 14:09)

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: Dělitelnost čísel od 1 do 1000

↑ vojta01:
čoveče nevím proč, ale píšemi že se neschoduje návratový typ nebo tak něco

přesně mě to píše
"conflicting types for 'mocnina'"

a já jelikož jsme nikdy dříve nedělal v céčku tak vážně nevím co s tím je

Code:

unsigned long long int mocnina (int n, int x) {  
       unsigned long long int vystup=1L;
      for(;n>0;n--)
        vystup=x * vystup;         
        
        return vystup;
    }

když mi poradíš co dělám blbě budu moc rád

Offline

 

#9 19. 02. 2011 14:33

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Dělitelnost čísel od 1 do 1000

↑ VojtechSejkora:
Spíš napiš tu část, kde fci voláš. Mně to funguje.


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#10 19. 02. 2011 14:55

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: Dělitelnost čísel od 1 do 1000

↑ gladiator01:

Code:

unsigned long long int palindrom=0;
               for(;q<pulkaD;q++){
                  palindrom+=cifra[q]*mocnina(D-q-1,10);
                  palindrom+=cifra[q]*mocnina(q,10);                             
               }

Offline

 

#11 19. 02. 2011 15:38 — Editoval gladiator01 (19. 02. 2011 15:43)

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Dělitelnost čísel od 1 do 1000

↑ VojtechSejkora:
Nevim, asi budeš muset poslat celý zdroják.
Zkontroluj si datové typy u cifra[q] a D.

Nebo třeba tam chybu nemáš a nezvládá to tvůj kompilátor (nevím jestli je to možné?).


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#12 19. 02. 2011 15:42

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: Dělitelnost čísel od 1 do 1000

↑ gladiator01:
cifra[q] je typu short a D je tipu int

Offline

 

#13 19. 02. 2011 18:13

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: Dělitelnost čísel od 1 do 1000

↑ Lumikodlak:

a když mi pak výjde po tom oc jsme to již jednou tím vzorcem prohnal něco jako třeba

54345

tak mohu o5 aplikovat stejný postup i na toto číslo dokud nedostanu nějaké jednoduché třeba 20 nebo tak že?

nejsem si tím totiž úplně jist dík

Offline

 

#14 19. 02. 2011 18:19

sL1
Příspěvky: 41
Reputace:   
 

Re: Dělitelnost čísel od 1 do 1000

Proč je tam 2x long?

Offline

 

#15 23. 02. 2011 00:55

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Dělitelnost čísel od 1 do 1000

↑ VojtechSejkora:
Podle me ano, nevidim duvod, proc by ten vzorec nesel pouzit znova, ale priznam se, ze jsem ho sam nikdy nepouzival :-)
↑ sL1:
2x long to by mel byt 64-bitovy integer.

Offline

 

#16 23. 02. 2011 01:00

sL1
Příspěvky: 41
Reputace:   
 

Re: Dělitelnost čísel od 1 do 1000

Už jsem si to vygoogli. Díky :)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson