Calcolare quantità numeri senza ripetizione in un intervallo
Salve ragazzi,
vorrei capire quali calcoli devo fare per sapere esattamente quanti numeri ci sono in un intervallo le cui cifre non si ripetono!
Io ho pensato a qualcosa del genere:
se ad esempio devo calcolare quanti ce ne sono nell'intervallo [1056, 7954], ho pensato di fare questo calcolo:
$a = D(9, 4) = 10*9*8*7 = 5040$
$b = (a / 10) * (1 + (9 - 7)) = 1512$
$a - b = 3528$
Purtroppo il calcolo non basta. Infatti ho provato a far calcolare il numero con un mio programma e non corrisponde.
Qualche suggerimento?
vorrei capire quali calcoli devo fare per sapere esattamente quanti numeri ci sono in un intervallo le cui cifre non si ripetono!
Io ho pensato a qualcosa del genere:
se ad esempio devo calcolare quanti ce ne sono nell'intervallo [1056, 7954], ho pensato di fare questo calcolo:
$a = D(9, 4) = 10*9*8*7 = 5040$
$b = (a / 10) * (1 + (9 - 7)) = 1512$
$a - b = 3528$
Purtroppo il calcolo non basta. Infatti ho provato a far calcolare il numero con un mio programma e non corrisponde.
Qualche suggerimento?
Risposte
"cenzo":
Proverei allora il seguente algoritmo per determinare quanti numeri (senza cifre ripetute) ci sono fino al numero N (escluso).
Supponiamo che N=7386
E' un numero di l=4 cifre
La prima è p=7; la seconda s=3; la terza t=8; la quarta q=6
Calcolo le correzioni p'=7; s'=3; t'=6; q'=5.
Ad esempio t'=t-2=8-2=6 Sottraggo 2 perchè il numero t=8 "contiene" due numeri precedenti più piccoli (7 e 3)
q'=q-1=6-1=5 poichè nei numeri fino al 6, tra i precedenti, c'è già il 3, quindi tolgo solo 1.
Per p' non ci sarà mai alcuna correzione (p'=p).
Per s' non necessita correzione in quanto 3 è più piccolo di 7.
Fatto questo primo passo posso calcolare:
numeri del tipo (0..6)XXX ne sono 7*9*8*7 cioè p'*9*8*7
numeri del tipo 7(0..2)XX ne sono 1*3*8*7 cioè s'*8*7
numeri del tipo 73(0,1,2,4,5,6)X ne sono 1*1*6*7 cioè t'*7
numeri del tipo 738X ne sono 1*1*1*5 cioè q'
In definitiva i numeri con cifre diverse da 0000 a N=7386 escluso, ne sono:
p'*9*8*7+s'*8*7+t'*7+q'
Che ve ne pare?
Adesso è più chiaro il calcolo! Grazie Mille!
"xsl":
Adesso è più chiaro il calcolo! Grazie Mille!
Bene...
Quindi, ora puoi dirmi anche quanti numeri ci sono tra 212.476 e 872.984 ?
P.s. Trovare una modalità di calcolo, serve proprio per estendere il ragionamento ad un numero di cifre diverse, da quelle inizialmente proposte da te.
Dalla specifica che ho dato, l'input non dovrebbe presentare cifre ripetute!
Quindi saprei calcolarti: [213.476, 872.964]
e cioè: 101.172
EDIT: Però se volete possiamo pensare per fare il medesimo calcolo per cifre in input con ripetizioni!
Quindi saprei calcolarti: [213.476, 872.964]
e cioè: 101.172
EDIT: Però se volete possiamo pensare per fare il medesimo calcolo per cifre in input con ripetizioni!
"xsl":
Dalla specifica che ho dato, l'input non dovrebbe presentare cifre ripetute!
Quindi saprei calcolarti: [213.476, 872.964]
e cioè: 101.172
EDIT: Però se volete possiamo pensare per fare il medesimo calcolo per cifre in input con ripetizioni!
Il sistema di calcolo va bene, comunque.
Mi sembra corretto il tuo calcolo (considerando entrambi numeri)
"Umby":
Il sistema di calcolo va bene, comunque.
Mi sembra corretto il tuo calcolo (considerando entrambi numeri)
Hai ragione ho provato il calcolo per [212.476, 872.984] e ottengo 101.220
In questo caso non ho bisogno di sommare 1 unità in quanto non differisce! Perchè questo accade?