一. 題目描述
Write an algorithm to determine if a number is “happy”.
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.
Example: 19 is a happy number
1^2 + 9^2 = 82 (各個位的平方和)
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
二. 題目分析
題目要求對任意一個正整數,不斷各個數位上數字的平方和,若經過若干次運算後結果收斂到1,則該數字為Happy Number,不是Happy Number的數在經過多次運算後會從某個數開始陷入循環。這道題目我們只用根據規則進行計算,並使用一個map存儲已經出現過的數字,這樣每輪計算完成後查找map,若發現值已存在,證明已陷入循環,可跳出循環並判定該整數不是Happy Number。
Igmd4geJ7PZ9hPwk_PZGZK6QttvzH5TpUiQIPy8qZAmG6o9-5-x-Eu2WGoQuhnASB7alb2ecEatpVj0C9-3DaQPjy0Cpvmvp7AB3IiKy6vu1Qb8FhCbj_Eg1Nt4ba9FDzZT1BzbQcsL5a
三. 示例代碼
#include
#include
一些測試結果: