Happy Number
problem
Happy Numberとは?
与えられた因数の各桁数の二乗和を求める.
値が1の場合はhappy number、そうでない場合はこの手順を繰り返します.
Input: n = 19
Output: true
Explanation:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
solution
//problem no : 202
class Solution {
public:
int calHappy(int n){
int ans = 0;
while(n > 0){
int i = n%10;
ans += i*i;
n /= 10;
}
return ans;
}
bool isHappy(int n) {
int happyNum = calHappy(n);
set<int> myset;
pair<set<int>::iterator,bool> p;
while(happyNum != 1){
p = myset.insert(happyNum);
if(p.second == false){
return false;
}
happyNum = calHappy(happyNum);
}
return true;
}
};
ポスト
どうやって果てしなく動く部分を見つけますか?
以前に作成したslowとfastの概念を適用すれば、簡単に完成できます.
Reference
この問題について(Happy Number), 我々は、より多くの情報をここで見つけました https://velog.io/@rladygks329/Happy-Numberテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol