IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

progra newbie, élever à la puissance sans boucle


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Points : 19
    Points
    19
    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 éprouvé

    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 273
    Points
    1 273
    Par défaut
    Allez, juste un petit indice*: x^8 = ((x^2)^2)^2; par ailleurs, 17 = 16+1…

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Points : 19
    Points
    19
    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
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut,
    Pourquoi ne pas coder en Python l'exemple donné en C ici?
    - W

  5. #5
    Membre éprouvé

    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 273
    Points
    1 273
    Par défaut
    @wiztricks*: l’énoncé dit «*le moins de multiplications possibles, sans utiliser l’opérateur ** ni de boucle.*»

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Points : 19
    Points
    19
    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
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    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

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Points : 19
    Points
    19
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éprouvé

    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 273
    Points
    1 273
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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*!

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Points : 19
    Points
    19
    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.

Discussions similaires

  1. [VBA-E] tester la valeur d'une plage de données sans boucle
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/04/2007, 09h36
  2. Comment élever à une puissance ?
    Par MeTaL_666 dans le forum C++
    Réponses: 6
    Dernier message: 09/11/2006, 02h25
  3. [VBA-E] Modifier le contenu d'un range sans boucle
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/04/2006, 12h19
  4. [SQL]Lever une exception sans planter le code
    Par Titouf dans le forum Oracle
    Réponses: 2
    Dernier message: 25/01/2006, 16h28
  5. créer des liens automatiquement mais sans boucle
    Par psychoBob dans le forum Langage
    Réponses: 8
    Dernier message: 15/12/2005, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo