Le plus petit chiffre

Documents pareils
Programmation avec Xcas ou Python

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique avec Algobox


Représentation d un entier en base b

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Algorithmique et structures de données I

Feuille TD n 1 Exercices d algorithmique éléments de correction

Algorithme. Table des matières

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Cours 7 : Utilisation de modules sous python

Définitions. Numéro à préciser. (Durée : )

Rappels sur les suites - Algorithme

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Simulation de variables aléatoires

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Glossaire des nombres

Cours d Informatique

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

TSTI 2D CH X : Exemples de lois à densité 1

POKER ET PROBABILITÉ

Cours d Algorithmique et de Langage C v 3.0

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

EXPLOITATIONS PEDAGOGIQUES DU TABLEUR EN STG

Organigramme / Algorigramme Dossier élève 1 SI

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Fluctuation d une fréquence selon les échantillons - Probabilités

Suites numériques 4. 1 Autres recettes pour calculer les limites

Cours Informatique Master STEP

Licence Sciences et Technologies Examen janvier 2010

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Utilisez Toucan portable pour vos sauvegardes

Indications pour une progression au CM1 et au CM2

CORRECTION EXERCICES ALGORITHME 1

Probabilités Loi binomiale Exercices corrigés

Probabilités. Une urne contient 3 billes vertes et 5 billes rouges toutes indiscernables au toucher.

Pi, poker et informatique ; une «épuisante» alliance pour des projets en mathématiques

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

C f tracée ci- contre est la représentation graphique d une

Calcul Formel et Numérique, Partie I

Algorithmique et programmation : les bases (VBA) Corrigé

STAGE IREM 0- Premiers pas en Python

LES GENERATEURS DE NOMBRES ALEATOIRES

1 Recherche en table par balayage

B = A = B = A = B = A = B = A = Recopier sur la copie chaque expression numérique et la réponse exacte. Réponse A Réponse B Réponse C Solution

Le chiffre est le signe, le nombre est la valeur.

Chapitre 2. Eléments pour comprendre un énoncé

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

I. Introduction aux fonctions : les fonctions standards

La construction du nombre en petite section

Exercice autour de densité, fonction de répatition, espérance et variance de variables quelconques.

Introduction à l algorithmique et à la programmation (Info 2)

Informatique et sciences du numérique

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Développement décimal d un réel

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Programmation C. Apprendre à développer des programmes simples dans le langage C

Annexe commune aux séries ES, L et S : boîtes et quantiles

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

16 Chapitre 16. Autour des générateurs pseudoaléatoires

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

Cours de Probabilités et de Statistique

Algorithmique et Programmation, IMA

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Informatique Générale

LA BATTERIE DU PORTABLE

EXERCICES DE REVISIONS MATHEMATIQUES CM2

L ALGORITHMIQUE. Algorithme

Synthèse «Le Plus Grand Produit»

LES REGLEMENTS AVEC SOCIEL.NET DERNIERE MISE A JOUR : le 14 juin 2010

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

La persistance des nombres

chapitre 4 Nombres de Catalan

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Programmes des classes préparatoires aux Grandes Ecoles

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Temps forts départementaux. Le calcul au cycle 2 Technique opératoire La soustraction

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Algorithmique I. Algorithmique I p.1/??

Probabilités conditionnelles Loi binomiale

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

1.6- Génération de nombres aléatoires

OPTION SCIENCES BELLE-ISLE-EN-TERRE

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

BACCALAURÉAT PROFESSIONNEL SUJET

PROJET 1 : BASE DE DONNÉES REPARTIES

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Chapitre 1 I:\ Soyez courageux!

Feuille d exercices 2 : Espaces probabilisés

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

1 Savoirs fondamentaux

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Programmation C++ (débutant)/instructions for, while et do...while

Transcription:

Le plus petit chiffre On utilise ici des sous-programmes : ils rendent accessibles des situations relativement complexes par le découpage des tâches qu ils permettent. La même situation devient beaucoup trop lourde à mettre en place avec un logiciel n autorisant pas les sous-routines (comme c est le cas pour la version actuelle d Algobox). Dans les programmes Réalisation d une simulation, probabilité sur un ensemble fini, calculs sur des nombres entiers, boucle, instruction conditionnelle. Découverte d une croissance exponentielle ("explosion" du temps de calcul). 1 Plus petit chiffre Écrire la partie traitement de l algorithme suivant : Entrée un entier naturel n Traitement Sortie le plus petit chiffre de l écriture décimale de n Le traduire en machine. 2 Simulation Soit j 2 un entier. On tire au hasard un entier s écrivant avec j chiffres (écriture décimale usuelle). Si le plus petit chiffre est 0, je gagne et si le plus petit chiffre est 2, vous gagnez. Écrire un programme qui simule n parties et affiche les fréquences de sortie de chacun des chiffres de 0 à 9. Acceptez vous de jouer à ce jeu? 3 Dénombrement Écrire un programme qui affiche les probabilités de sortie de chacun des chiffres de 0 à 9 (qui dénombrera donc le nombre d apparitions de 0 comme plus petit chiffre d un entier à j chiffres, le nombre d apparitions de 1 comme plus petit chiffre d un entier à j chiffres...) 4 Mystère On donne le programme ci-dessous : Mény Jean-manuel - Fasquelle Ludovic 1/7 Académie de Lyon - Algorithmique

Entrée un entier j 2 Traitement initialisation de liste à [0,0,0,0,0,0,0,0,0,0] b prend la valeur 10 j 10 j 1 Pour k de 0 jusque 9 faire liste[k] prend la valeur b (10 (k + 1)) j b prend la valeur b liste[k] Fin_ Pour Sortie Affichage de la liste Faire le lien avec les questions précédentes. Expliquez le fonctionnement. 5 Somme des plus petits chiffres des entiers à j chiffres Où l on contaste qu un peu de mathématiques économise des décennies de calcul. 1. Écrire la partie traitement puis traduire sur machine : Entrée un entier naturel j 2 Traitement Sortie la somme des plus petits chiffres de tous les entiers à j chiffres On se servira d une boucle parcourant l ensemble des nombres à j chiffres. 2. Évaluer expérimentalement le temps de calcul pour l exécution avec l entrée j = 4. En déduire une évaluation du temps de calcul nécessaire à l exécution avec l entrée j = 16. 3. Proposer une formule permettant le calcul de cette somme beaucoup plus rapidement. Mény Jean-manuel - Fasquelle Ludovic 2/7 Académie de Lyon - Algorithmique

1 Plus petit chiffre Éléments de réponses XCAS s a i s i r (n) : ; s i n==0 alors ppc : = 0 ; sinon ppc : = 9 ; tantque n!=0 faire unite := irem (n, 1 0 ) ; s i unite <ppc alors ppc:= unite ; f s i ; n:= iquo (n, 1 0 ) ; ftantque ; f s i : ; a f f i c h e r ( ppc ) : ; Une version avec paramètre pour réutilisation dans les programmes qui suivent : p l u s p e t i t c h i f f r e (n) : = { /* renvoie le plus p e t i t c h i f f r e de l écriture décimale de l entier n*/ local ppc, unite ; s i n==0 alors return ppc ; f s i ; ppc : = 9 ; tantque n!=0 faire unite := irem (n, 1 0 ) ; s i unite <ppc alors ppc:= unite ; f s i ; n:= iquo (n, 1 0 ) ; ftantque ; return ppc ; } : ; Une version récursive : pptchif (n) :=quand(n<10,n, min( irem (n, 1 0 ), pptchif ( intdiv (n, 1 0 ) ) ) ) 2 Simulations Mény Jean-manuel - Fasquelle Ludovic 3/7 Académie de Lyon - Algorithmique

s a i s i r ( " Entrez l a valeur de j : ", j ) : ; s a i s i r ( " Entrez l e nombre n de p a r t i e s : ", n) : ; l i s t e : = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ; /* l i s t e contiendra les e f f e c t i f s, par exemple l i s t e [2]= cardinal ( plus p e t i t c h i f f r e =2) */ pour k de 1 jusque n faire t i r a g e := f l o o r ( rand (10^( j 1),10^ j ) ) ; /*On t i r e au hasard un entier à j c h i f f r e s */ ppc:= p l u s p e t i t c h i f f r e ( t i r a g e ) ; /*on détermine le plus p e t i t c h i f f r e de cet entier */ l i s t e [ ppc ] : = l i s t e [ ppc ] + 1 ; /*on incrémente le compteur correspondant */ l i s t e := e v a l f ( l i s t e /n, 3 ) : ; /* 3 est le nombre de d i g i t s à l affichage */ 3 Dénombrement exact par boucles s a i s i r ( " Entrez l a valeur de j : ", j ) : ; /* compte le nombre d apparitions de chacun des c h i f f r e s comme plus p e t i t c h i f f r e parmi les entiers à j c h i f f r e s */ l i s t e : = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] : ; pour k de 10^( j 1) jusque 10^ j 1 faire ppc:= p l u s p e t i t c h i f f r e ( k ) ; l i s t e [ ppc ] : = l i s t e [ ppc ] + 1 ; l i s t e := e v a l f ( l i s t e /(10^ j 10^( j 1) ), 3 ) : ; /* 3 est le nombre de d i g i t s à l affichage */ Quelques résultats : 1. Avec j = 3 : liste :[171,217,169,127,91,61,37,19,7,1] liste :[0.19,0.241,0.188,0.141,0.101,0.068,0.041,0.021,0.008,0.001] 2. Avec j = 4 : liste :[2439,2465,1695,1105,671,369,175,65,15,1] liste :[0.271,0.274,0.188,0.123,0.075,0.041,0.019,0.007,0.002,0.0] 4 Programme mystère Mény Jean-manuel - Fasquelle Ludovic 4/7 Académie de Lyon - Algorithmique

s a i s i r ( j ) : ; l i s t e : = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] : ; b:=10^ j 10^( j 1) : ; pour k de 0 jusque 9 faire l i s t e [ k ] : = b (10 (k+1) ) ^ j ; b:=b l i s t e [ k ] ; Le programme mystère a le même rôle que le programme précédent de décompte exact. Pour les entiers à 3 chiffres, on peut dénombrer de la façon suivante (et c est le principe du programme mystère) : 1. Il existe 10 3 10 2 = 9 10 10 = 900 entiers à trois chiffres. 2. Il en existe 9 9 9 qui ne contiennent que des chiffres 1. Le nombre d entiers à trois chiffres dont le plus petit chiffre est 0 est donc de 900 9 3 = 171. 3. Il existe 8 3 entiers à trois chiffres de plus petit chiffre 2. Il y a donc 900 171 8 3 = 217 entiers de trois chiffres de ppc 1. 4. Il existe 7 3 entiers à trois chiffres de plus petit chiffre 3. Il y a donc 900 171 217 7 3 = 169 entiers de trois chiffres de ppc 2. 5. etc Pour les entiers entre 10 j 1 et 10 j 1, c est à dire les entiers à j chiffres : Entiers à j chiffres Effectif à j chiffres 10 j 10 j 1 = 10 j 1 9 tous les chiffres 1 9 j tous les chiffres 2 8 j tous les chiffres 3 7 j tous les chiffres 4 6 j tous les chiffres 5 5 j tous les chiffres 6 4 j tous les chiffres 7 3 j tous les chiffres 8 2 j tous les chiffres 9 1 Mény Jean-manuel - Fasquelle Ludovic 5/7 Académie de Lyon - Algorithmique

Plus petit chiffre Effectif ppc=0 9 10 j 1 9 j ppc=1 9 10 j 1 ( 9 10 j 1 9 j ) 8 j = 9 j 8 j ppc=2 9 10 j 1 ( 9 10 j 1 9 j ) ( 9 j 8 j ) 7 j = 8 j 7 j ppc=3 7 j 6 j ppc=4 6 j 5 j ppc=5 5 j 4 j ppc=6 4 j 3 j ppc=7 3 j 2 j ppc=8 2 j 1 j ppc=9 1 5 Somme des plus petits chiffres des entiers à j chiffres 1. Exemple de programme déterminant la somme : s a i s i r ( j ) : ; som: = 0 : ; pour k de 10^( j 1) jusque 10^ j 1 faire som:=som+ p l u s p e t i t c h i f f r e ( k ) ; a f f i c h e r (som) : ; Ou en utilisant la fonction somme du langage : s ( j ) :=somme( p l u s p e t i t c h i f f r e ( k ), k,10^( j 1),10^ j 1) Pour la somme sur les entiers à 4 chiffres, on a un temps de calcul dépassant déjà 16 s sur ma machine et plus de 2,6 minutes pour les entiers à 5 chiffres... 2. On part sur un temps de une seconde pour l exécution avec l entrée j = 4. Ce temps correspond à peu près à l exécution de la boucle qui comprend à peu près 10 4 10 3 = 9 10 3 tours. Dans l exécution avec l entrée j = 16, la boucle comprend à peu près 9 10 15 tours, soit 10 12 fois plus. En considérant que le temps est multiplié à peu près dans les mêmes proportions, on trouve plus de 31700 ans. Avec j = 20, on multiplie par 10 16 et on obtient un temps de plus de 300 millions d années. 3. D après le tableau d une question précédente, la somme : S = n entier à j chiffres pluspetitchiffre(n) Mény Jean-manuel - Fasquelle Ludovic 6/7 Académie de Lyon - Algorithmique

est donnée par : ( ) ( ) ( ) ( ) ( ) S = 0 9 10 j 1 9 j + 1 9 j 8 j + 2 8 j 7 j + 3 7 j 6 j + + 8 2 j 1 + 9 = 9 j + 8 j + + 2 j + 1 d où un programme simple de calcul : S ( j ) :=somme( k^j, k, 1, 9 ) Mény Jean-manuel - Fasquelle Ludovic 7/7 Académie de Lyon - Algorithmique