Menu
CoddyTech

Happy Number

正の整数 n から始め、各桁の平方の和で何度も置き換えます。たとえば、12 は 1² + 2² = 5 になります。この処理で 1 に到達した場合、n はハッピー数です。そうでない場合は、1 を含まない数を永久に循環します。n がハッピー数なら true を、そうでなければ false を返してください。

関数

isHappy(n: integer) → boolean
ninteger
テストする正の整数
戻り値boolean
各桁の数字の平方和を繰り返した結果が1に達する場合はtrue、無限ループする場合はfalse

制約

  • 1 ≤ n ≤ 231-1

例

入力
n = 7
出力
true
説明
7 は 49 になり、次に 4² + 9² = 97、次に 130、次に 10、そして 1 になります。この過程は 1 に到達するので、7 はハッピー数です。

lock icon提出時に隠しテスト+16件

challenge icon

発展問題

1 から 10^6 までのハッピー数を、すべての開始値について最初からたどるのではなく、1000 未満の数の答えを再利用して、どうすれば素早く数えられるでしょうか?

コードをリセット
def isHappy(n):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

n = 7

期待値

true