Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

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

#1 05. 12. 2010 02:04

Mr.Pinker
Příspěvky: 542
Reputace:   12 
 

dobrá čísla

Kladné celé číslo označíme jako „dobré“, jestliže je dělitelné beze zbytku každou svou cifrou. Například číslo 612 je dobré, neboť je dělitelné šestkou, jedničkou i dvojkou. Naproti tomu číslo 512 není dobré, jelikož není dělitelné pěti. Napište program, který pro dané kladné celé číslo N (N není větší než 10000) určí počet všech dobrých čísel z intervalu od 1 do N (včetně). Používejte standardní vstup a výstup.

Příklad vstupu:
25

Odpovídající výstup:
14

Vysvětlení:
V uzavřeném intervalu od 1 do 25 leží těchto 14 dobrých čísel:
1 2 3 4 5 6 7 8 9 11 12 15 22 24

Code:

rogram dobracisla;
var  d,s,a,e,c:integer;
procedure pocetcifer(a:integer);
const m=ln(10);
var z,x,e,f,d,c:integer;y,q:real;
begin
z:=abs(a);
y:=ln(z);
q:=y/m;
x:=Trunc(q);
e:=round(exp(x*m));
end;
begin
read(a);
c:=0 ;
begin
repeat
pocetcifer(a);
s:=round(e/10);
while s<>1 do
begin
d:=(a mod e);
d:=a div d;
if (a mod d) =0 then
s:=(s div 10) ;
if (a mod s*10)=0 then
begin
c:=c+1;
a:=a-1;
end
else a:=a-1;
end;
until a<>0;
end;
write(c);
end.

nemůžete mi poradit proč to nejede ?

Offline

  • (téma jako vyřešené označil(a) gladiator01)

#2 05. 12. 2010 02:30 — Editoval VojtechSejkora (05. 12. 2010 02:33)

VojtechSejkora
Příspěvky: 176
Reputace:   
 

Re: dobrá čísla

↑ Mr.Pinker:
já teda se v tom tvém programu moc nevyznám, ale asi bych to dělal tak, podle cifer bych určoval jestli je dělitelné nebo ne... nevím jestli je to nejlepší způsob, ale myslím si že by to jít mohlo... teda nevím jestli v pascalu funguje něco jako switch, a taky nevím jestli to třeba není pomalejší jak takto, ale napadlo mě
pro číslo 2 musí celé číslo končit cifrou dělitelnou 2mi bezezbitku
pro 3 musí být součet cifer dělitelný 3mi bezezbitku
pro 4 poslední dvojčíslí dělitelné 4mi bezezbitku
pro 5 končit 0 nebo 5
pro 6 dělitelné 2kou a 3kou
pro 7 (to neznám žádnou poučku:(, ale našel jsem

je-li rozdíl součtu lichých a sudých trojic cifer dělitelný 7

a

je-li sedmi dělitelný součet vypočtený tak, že se první až n-tá číslice od zadu vynásobí postupně čísly (periodicky se opakujícími): 1, 3, 2, 6, 4, 5

) takže to stejně musíme vydělit
pro 8 poslední trojčíslí musíme dělit a musí být bezezbitku dělitelné
pro 9 jeli součet cifer dělitelný devíti
a číslo které obsahuje 0 není jí dělitelnou

takže bych si z čísla získal jednotlivé cifry
a pak podle potřeby bych testoval jednotlivé testy (možná budou ryhlejší)

taky je jasné že pokud n bude větší jak 10, tak máš jistých 9 číslic, které jsou dělitelné a můžeš rovnou začít od 11cky
nad 20 stačí najít 1. dělitelný a pak skákat po 2 a testovat jestli je to pravda i s tou poslední číslicí (nad 20 ku jsou dobrá čísla jen 22 a 24)
u 30ti to tak udělat taky u 40ti taky můž skákat po 4řech od 1.správného (je to jen 44,48)

no kdyby jsi ještě nestíhal tak se zkusím kouknout na to ještě podrobněji... a nějaký den v týdnu ti prozradím co jsme vymyslel... (třeba tam je nějaká pravidelnost)

jako obecně se dá říci že když začínáš novou desítku, tak musíš jednotky mít stejné jako desítky, a to platí od 10 do 100 (tedy 11,22,33,44,55,66,77,88 a 99 jsou první, které splňují podmínky)

Offline

 

#3 05. 12. 2010 11:02 — Editoval gladiator01 (10. 06. 2013 20:35)

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

Re: dobrá čísla

↑ Mr.Pinker:
To vás ve škole neučili, že má mít zdrojový kód nějakou úpravu?

EDIT: 10.6.2013 Označeno za vyřešené pro neaktivitu.


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

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson