2016-10-08 3 views
1

Ce qui serait un bon moyen de vérifier si un nombre x, peut être exprimé comme la somme des chiffres de x, à la puissance y. Par exemple, 512 fonctionne parce que 5 + 1 + 2 = 8 et 8^3 = 512. J'ai juste besoin d'aide avec l'approche générale, et pas vraiment le code.Requête sur les exposants

Merci!

+0

Peut-être il y a une approche mathématique, mais la méthode force brute semble suffisante ici: calculer les sommes des chiffres de 'x' (5 + 1 + 2 = 8 ici) et d'essayer tous les exposants possibles jusqu'à ce que le résultat est supérieur ou égal à 'x' (8^1, 8^2, 8^3). – Blackhole

Répondre

0
import math 

def check(n): 
    # sum digits and take the logarithm of input according to sum 
    l = math.log(n, sum(int(e) for e in str(n))) 

    # if diff is very small, then yes it can be expressed 
    return l - int(l) < 1e-6, int(l) # skip second if only check is needed 

check(4) # True, 1 
check(512) # True, 3 
check(511) # False, 3