#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: bt3gl


def get_next(n):
  
  total_sum = 0
  while n > 0:
    n, digit = divmod(n, 10)
    total_sum += digit**2

  return total_sum


def is_happy(self, n: int) -> bool:

  seen = set()
  while n != 1 and n not in seen:
    seen.add(n)
    n = get_next(n)

  return n == 1