2016-10-08 1 views
1

숫자 x가 x의 자릿수로 표현 될 수 있는지 확인하는 좋은 방법은 거듭 제곱입니다.지수에 대한 질문

예를 들어 5 + 1 + 2 = 8이고 8^3 = 512이기 때문에 512가 작동합니다. 저는 코드가 아닌 일반적인 접근법에 대한 도움이 필요합니다.

감사합니다!

+0

어쩌면 수학적 접근법 존재하지만 무차별 방법은 여기에 충분한 같다 : 결과까지 모든 가능한 순열 (5 + 1 + 2 여기 = 8) x' '의 숫자의 합을 계산하려고 'x'(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