즐거움 수 (lintcode: happy - number)

905 단어
하나의 알고리즘 을 써 서 하나의 숫자 가 '쾌락 수' 인지 아 닌 지 를 판단 하 다.
하나의 숫자 가 즐거움 인지 아 닌 지 는 이렇게 정의 된다. 하나의 정수 에 대해 매번 이 수 를 그의 모든 위치 에 있 는 숫자의 제곱 으로 바 꾼 다음 에 이 과정 을 반복 한다. 이 숫자 가 1 로 변 하거나 무한 순환 이지 만 1 로 변 하지 않 을 때 까지.1 로 변 할 수 있다 면, 이 수 는 즐거움 수 다.
샘플: 19 는 하나의 즐거움 수: 19 - > 82 - > 68 - > 100 - > 1
사고방식: 비 쾌락 수, 예 를 들 어 61 에 대해 다음 과 같은 순환 과정 이 있 을 수 있다. 61 - > 37 - > 58 - > 89 - > 145 - > 42 - > 20 - > 4 - > 16 - > 37 비 쾌락 수 는 마지막 에 서열 4 - > 16 - > 37 - > 58 - > 89 - > 145 - > 42 - > 20 의 사순환 에 들어간다
코드:
def isHappy(n):
    result = 0
    while result != 1 and result != 4:
        result = 0
        n = str(n)
        for i in n:
            result = int(i)**2 + result
        n = result
    if result == 1:
        return True
    return False

n = 61
print isHappy(n)

lintcode 원제 사고의 출처
20180220

좋은 웹페이지 즐겨찾기