Bonjour,
Je voudrais faire un algorithme qui compte combien de fois on utilise un numéro pour l'écriture des nombre de 0 à 1000, par exemple le 7 est utilisé une fois dans 517 et deux fois dans 177 ..
Une idée pour commencer ?
Bonjour,
Je voudrais faire un algorithme qui compte combien de fois on utilise un numéro pour l'écriture des nombre de 0 à 1000, par exemple le 7 est utilisé une fois dans 517 et deux fois dans 177 ..
Une idée pour commencer ?
ca ne serait pas une somme des C(n,i)*9^(n-i)?
Edit: ah... non. Dans ce cas on compterai aussi les nombres commencant par 0. Mais ca doit être possible quand meme d'avoir une formule directe.
bah yen a 2.
- La bête est d'écrire le nombre dans une chaîne, et de compter
- La seconde est la même chose, mais en numérique :
Centaine = Nombre/100
Dizaine = (Nombre - Centaine*100)/10
Unite = (Nombre - Centaine*100 - Dizaine*10)
et là on a 3 chiffres/compteurs à comparer/incrémenter
1 occurrence de 7 dans un nombre a 3 chiffres:
7-- = 9*9 possibilités = 81
-7- = 9*9 possibilités = 81
--7 = 9*9 possibilités = 81
2 occurrences de 7 dans un nombre a 3 chiffres:
77- = 9 possibilités
-77 = 9 possibilités
7-7 = 9 possibilités
3 occurrences de 7 dans un nombre a 3 chiffres:
777 = 1 possibilité
Total occurrences de 7 dans un nombre a 3 chiffres:
1*(81+81+81) + 2*(9+9+9) + 3*(1) = 300
euh.. Je ne crois pas, d'après son exemple, qu'il parlait des possibilités statistiques, mais de la réalité de l'écriture dans un chiffre donné..
"possibilités statistiques" ?
J'ai juste fait un dénombrement. Sauf erreur, tous les cas sont comptés:
0 occurrence de 7 dans un nombre a 3 chiffres: 1 * 9^3 = 729
1 occurrence de 7 dans un nombre a 3 chiffres: 3 * 9^2 = 243
2 occurrences de 7 dans un nombre a 3 chiffres: 3 * 9^1 = 27
3 occurrences de 7 dans un nombre a 3 chiffres: 1 * 9^0 = 1
Total: 729+243+27+1 = 1000 ... yes
1 occurrence de 7 dans un nombre a 3 chiffres:
7-- = 9*9 possibilités = 81
-7- = 9*9 possibilités = 81
--7 = 9*9 possibilités = 81 <---- 517
2 occurrences de 7 dans un nombre a 3 chiffres:
77- = 9 possibilités
-77 = 9 possibilités <---- 177
7-7 = 9 possibilités
3 occurrences de 7 dans un nombre a 3 chiffres:
777 = 1 possibilitéEnvoyé par Elaich
faudrait avoir des précisions de la part du PO mais on ne parle pas de la même chose :
tu parles bien de possibilités et d'occurence, moi je parle du nombre de fois où le chiffre est utilisé dans l'écriture d'un nombre donné..
Je propose la formule ci-jointe. A vérifier bien sûr (pour le zéro par exemple).
Je suis bien d' accord avec toi.
On peut determiner ce nombre de la maniere suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 nombre<-177 occurence<-0 chiffre<-7 repeter si nombre mod 10 =chiffre alors occurence<-ocurence+1 finsi nombre<-nombre div 10 jusqu' à nombre=0 //il ya occurence de chiffre dans nombre
Moi j'ai compris la même chose que PseudoCode, le PO a demandé "combien de fois on utilise un numéro pour l'écriture des nombres de 0 à 1000 ?" pas "comment compter le nombre de 7 dans l'écriture d'un nombre ?". Bien sûr il est possible qu'il se soit mal exprimé.
--
Jedaï
Ah les matheux
pseudocode, phryte, Jedai :
Voilà qui devrait résoudre les deux problèmes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 def NbreDeFois1(x,n): if n<10: if n==x: return 1 else: return 0 else: return NbreDeFois1(x,n/10)+NbreDeFois1(x,n%10) def NbreDeFois2(x,n): s=0 for i in range(0,n+1): s+=NbreDeFois1(x,i) return s def main(): print NbreDeFois1(7,771) print NbreDeFois2(7,1000) if __name__ == '__main__': main()
C'est sur que ce probleme là est plus facile. La version iterative de l'algo de Zavonen :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 static int digitcount(int digit, int number) { int count=0; while(number!=0) { if (number%10==digit) count++; number/=10; } return count; } public static void main(String[] args) { int count = digitcount(7,771); System.out.println(count); }
Bonsoir;
merci pour les 2 propositions mais je comprend pas trop le "C" j'aimerai seulement avoir l'algorithme ..
Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Nombre:=771 Chiffre:=7 Compteur:=0 TantQue ( Nombre != 0 ) Si ( (Nombre modulo 10) == Chiffre ) Alors Compteur:=Compteur+1 Nombre:=Nombre/10 Fint TantQue Afficher Compteur
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager