Partage
  • Partager sur Facebook
  • Partager sur Twitter

écrire algébriquement 6+66+666+6666...

Sujet résolu
    19 février 2016 à 10:49:40

    Bonjour, étant donnés deux nombres entiers à un seul chiffre k et m, je dois calculer la somme k+kk+kkk+... (le dernier terme de cette somme ayant "m" chiffres).

    Exemple concret : k = 6 ; m = 5

    Pour obtenir 6+66+666+6666+66666, je dois faire : 1*6+11*6+111*6+1111*6+11111*6. La dernière multiplication a cinq fois le chiffre 1.

    En généralisant avec k et m, je devrais faire : 1*k+11*k+111*k etc. La dernière multiplication doit avoir "m" fois le chiffre 1. Mais comment écrire en fonction de "m" combien de fois il y aura de chiffres 1 ? Il y a bien sûr un maximum de 9 chiffres 1.

    J'espère que j'ai été assez claire dans mes explications. Merci de m'avoir lue.

    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2016 à 10:59:37

      Afin de répéter un chiffre plusieurs fois, tu peux ruser et transformer d'abord ton nombre en chaîne de caractères. Ensuite lorsqu'on multiplie une chaîne de caractères par un nombre, on duplique la chaîne de caractères autant de fois. Si ensuite on retransforme cette chaîne en entier, on obtient un nombre avec le chiffre répété.

      >>> k=6
      >>> m=5
      >>> str(k)
      '6'
      >>> str(k) * 2
      '66'
      >>> str(k) * m
      '66666'
      >>> int(str(k) * 2)
      66
      
      • Partager sur Facebook
      • Partager sur Twitter
        19 février 2016 à 11:06:06

        def calcul(k,m):
            """ calcul la somme de k*1 + k*11 + k*111 ... + k*11111 (il y a m '1') """
            res = 0
            for i in range(1,m+1):
                res += k * int("1"*i)   #"1"*i = "111.." il y aura i fois 1
            return res
        
        voila :)
        • Partager sur Facebook
        • Partager sur Twitter
          19 février 2016 à 16:06:37

          Coucou,

          Ça peut aussi s'écrire comme ça: \(k \frac{b^{n + 1} - b (n + 1) + n}{(b - 1) ^ 2}\), avec \(k\) qui vaut \(6\) ici, b vaut \(10\) et \(n\) ton nombre de \(1\). (merci wolframalpha).

          -
          Edité par Mad scientist 19 février 2016 à 16:17:28

          • Partager sur Facebook
          • Partager sur Twitter
          Un vrai cours de: (C | C++ | Haskell débutant | Haskell intermédiaire | Rust).
            19 février 2016 à 17:22:44

            Merci beaucoup, Dan737lewisbm et Mad scientist, pour votre aide très précieuse et très appréciée.

            Bonne journée.

            • Partager sur Facebook
            • Partager sur Twitter
              19 février 2016 à 17:25:06

              Bonjour,
              Pour les remercier tu peux poster le code adéquat de chacun. 
              Bon codage
              • Partager sur Facebook
              • Partager sur Twitter
              http://sinclair.recreatedzxspectrum.com/index.php
                19 février 2016 à 18:06:13

                à Dark-linux: "Pour les remercier tu peux poster le code adéquat de chacun. "

                Réponse : Les codes de chacun sont déjà dans ce post, je les ai vérifiés et ils sont parfaits. Peut-être veux-tu dire autre chose que je n'ai pas compris?

                • Partager sur Facebook
                • Partager sur Twitter

                écrire algébriquement 6+66+666+6666...

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown