2016-10-08 2 views
1

Что было бы хорошим способом проверить, может ли число x, выраженное в виде суммы цифр x, в силу y.Запрос о показателях

Например, 512 работает, потому что 5 + 1 + 2 = 8 и 8^3 = 512. Мне просто нужна помощь с общим подходом, а не с кодом.

Спасибо!

+0

Может быть, есть математический подход, но метод грубой силы выглядит здесь достаточно: не вычислить суммы цифр 'x' (5 + 1 + 2 = 8 здесь) и попробовать все возможные показатели до результата больше или равно «х» (8^1, 8^2, 8^3). – Blackhole

ответ

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