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
12+92=82
82+22=68
62+82=100
12+02+02=1
O(N)
//
// main.cpp
// CplusplusTest
//
// Created by mijian on 16/7/1.
// Copyright © 2016年 mijian. All rights reserved.
//
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
class Solution {
public:
bool isHappy(int n) {
unordered_set<int> vis;
while(vis.find(n)==vis.end()){
vis.insert(n);
int tmp=0;
while(n){
tmp+=(n%10)*(n%10);
n/=10;
}
n = tmp;
if(n==1)
return true;
}
return false;
}
};
int main(){
Solution s;
int n;
for(n=0;n<10000;++n){
if(s.isHappy(n))
cout<", ";
}
return 0;
}