快乐数 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 要求输入一个数,判断它是否为快乐数 算法的思路很简单,第一步将数分解,第二部进行计算判断,也没有需要注意的细节。
vector<int> extraNum(int n){ int tmp = 0; vector<int> result; int div_num = int(pow(10, 7)); for (int i = 0; i < 8; i++) { tmp = n / div_num; n = n - tmp * div_num; result.push_back(tmp); div_num = div_num / 10; } return result;}int calPower(vector<int> result){ int sum = 0; for (size_t i = 0; i < result.size(); i++) { sum = sum + (result[i] * result[i]); } return sum;}bool isHappy(int n){ vector<int> each_num; int power = 0; int count = 0; each_num = extraNum(n); power = calPower(each_num); if (power == 1) { return true; } while (power != 1 && count < 20) { each_num = extraNum(power); power = calPower(each_num); count++; } if (power == 1) return true; return false; //each_num = extraNum(n);}新闻热点
疑难解答