## Happy Number

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

### Analysis:

This problem is not difficult, just be careful with the terminating condition. In my answer, I use a set to store the previous numbers in each round. If current number is in this set, then this number cannot be "happy" since there must have an endless loop.

In python, list has the "in" operation to check the existence of individual member, in C++ I used a unordered_set from STL, and used "find" operation to check the element.

### Code(C++):

class Solution {
public:
bool isHappy(int n) {
int res = 0;
unordered_set<int> hist;

while(true){
if (n==1) return true;

while (n > 0){
res += (n%10)*(n%10);
n = n/10;
}

if (hist.find(res) != hist.end()){
return false;
}else{
hist.insert(res);
n = res;
res = 0;
}
}
}
};

### Code(Python):

class Solution:
# @param {integer} n
# @return {boolean}
def isHappy(self, n):
hist = []
res = 0
while 1:
if n==1:
return True
while n > 0:
res += (n%10) * (n%10)
n = n/10
if res in hist:
return False
else:
hist.append(res)
n = res
res = 0

1. interesting thing is that all loop end up with 4 - so i just checked if the sequence has a 4 anywhere. And it passed! total fluke :P !

2. Hp muadil toner kartuşu, orijinal ürün yerine farklı bir firma tarafından üretilmiş, aynı vazifeyi yapabilmesi için tasarlanmış fiyatı orjinal tonerlere göre daha ucuz eşdeğer kartuşlara verilen isimdir.
Yan sanayi toner adıyla da bilinen bu ürünler genellikle çin malı ithal yazıcı toneri kartuşlarıdır.
Orijinal yazıcı kartuşu muadili ürünlerde kalite ve fiyat standardı bulunmaz, markasız olarak ithal edilen edilen ürünler satıcı firmaların koydukları kutuların üzerinde yer alan isimlerde markalaşmış olsa dahi markaların tescili olmadığı gibi, kutu üzerinde ithalatçı firmaya ait bilgi yer almaz.
Muadili oldukları markayla ilişkisi olmayan yan sanayi veya eşdeğer kartuşlar, üreticilerine ödenen para ile doğru orantılı kaliteye sahiptirler.
Bu nedenle ucuz fiyat ile satılan ürünlerde kalite çizgisi kalitesiz toner dolumu yapan toner dolum merkezlerinin ürettikleri kartuşlardan dahi kalitesiz kartuşlara rastlanması doğaldır.