+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  1. #1
    Invité régulier
    Étudiant
    Inscrit en
    juin 2011
    Messages
    28
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 28
    Points : 7
    Points
    7

    Par défaut progra newbie, élever à la puissance sans boucle

    Bonjour !

    Erf, je débute en programmation, et j'ai une série d'exercices à faire, mais je n'ai pas les solutions.
    C'est très bien, parce que ça me fait réfléchir, mais il y a cet exercice auquel... Je ne trouve vraiment pas de solution, et ça me gêne beaucoup...
    Si une âme charitable pouvait m'aider, ce serait vraiment très très très gentil...

    L'intitulé va sembler hyper facile à beaucoup de gens, j'imagine : il faut élever un nombre entré en input à la puissance 17 sans parcourir de boucle, ni utiliser **, et en utilisant le moins de * possible.
    (j'ai bien pensé utiliser pow, mais je suppose que ce n'est pas ça qu'il faut trouver ^^)

    -> Je me suis dit que peut-être il y avait quelque chose à chercher du côté des nombres pairs et impairs... ?! Mais j'avoue en fait que je sèche complètement.

    Écrire un programme qui affiche a17 (a lu sur input) en employant le moins de multiplications possibles, sans utiliser l’opérateur ** ni de boucle.
    Merci d'avance à la personne qui pourrait me mettre sur la voie

  2. #2
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : mai 2008
    Messages : 662
    Points : 1 254
    Points
    1 254

    Par défaut

    Allez, juste un petit indice*: x^8 = ((x^2)^2)^2; par ailleurs, 17 = 16+1…
    Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques

  3. #3
    Invité régulier
    Étudiant
    Inscrit en
    juin 2011
    Messages
    28
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 28
    Points : 7
    Points
    7

    Par défaut

    Merci pour le coup de main, mon intuition d'aller vers les nombres pairs n'a pas l'air si mauvaise

    Sympa, vraiment !
    Bonne journée !

  4. #4
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    5 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 5 647
    Points : 8 537
    Points
    8 537

    Par défaut

    Salut,
    Pourquoi ne pas coder en Python l'exemple donné en C ici?
    - W
    Architectures Post-Modernes

  5. #5
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : mai 2008
    Messages : 662
    Points : 1 254
    Points
    1 254

    Par défaut

    @wiztricks*: l’énoncé dit «*le moins de multiplications possibles, sans utiliser l’opérateur ** ni de boucle.*»
    Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques

  6. #6
    Invité régulier
    Étudiant
    Inscrit en
    juin 2011
    Messages
    28
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 28
    Points : 7
    Points
    7

    Par défaut

    Oui, justement, voilà pourquoi. Parce qu'avec une boucle, je vois bien, et avec pow, je vois bien aussi
    C'est vicieux ces exercices d'ailleurs ! ^^

    Bon, j'ai mis "résolu", j'ai pas encore codé, mais je pense avoir compris. Yaplukà...

  7. #7
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    5 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 5 647
    Points : 8 537
    Points
    8 537

    Par défaut

    Citation Envoyé par mont29 Voir le message
    @wiztricks*: l’énoncé dit «*le moins de multiplications possibles, sans utiliser l’opérateur ** ni de boucle.*»
    Oops. Désolé, pas facile pour moi d'avoir des réflexes de programmation en assembleur dans un forum Python.
    - W
    Architectures Post-Modernes

  8. #8
    Invité régulier
    Étudiant
    Inscrit en
    juin 2011
    Messages
    28
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 28
    Points : 7
    Points
    7

    Par défaut

    Voilà, juste... Je teste la validité de ce que j'ai fait, ça fonctionne, je ne sais pas si c'est "optimal"...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def elevation(a, puissance=17):
        resultat = 1
        if ( puissance == 1 ):
            resultat*=a
     
        elif (puissance//2>=1):
            resultat=a*elevation(a, puissance-1)
        return resultat
    ?
    En tout cas, ça doit correspondre à peu près à ça.
    Je suppose que ça, c'est dit "récursif", et qu'il y a moyen de le faire en itératif... ?!
    hum... ^^

    Merci encore pour le coup de main en tout cas

  9. #9
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : mai 2008
    Messages : 662
    Points : 1 254
    Points
    1 254

    Par défaut

    Moui… d’une certaine façon, tu vas au-delà de ce qui est demandé (ton code est générique), mais je ne sais par si la récursivité ne serait pas considérée comme un genre de boucle…

    En fait, je pensais plutôt à ça*:

    Code :
    1
    2
    3
    4
    5
    def pow_17(x):
        x2 = x * x
        x4 = x2 * x2
        x8 = x4 * x4
        return x8 * x8 * x
    Soit cinq multiplications en tout et pour tout*!
    Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques

  10. #10
    Invité régulier
    Étudiant
    Inscrit en
    juin 2011
    Messages
    28
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 28
    Points : 7
    Points
    7

    Par défaut

    ah ouais... Effectivement, je vais chercher midi à 14h, moi !
    M'étonne pas... ^^

    Je pense que ton idée correspond mieux à l'intitulé effectivement.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •