哈希表——快乐数

#include<iostream>
#include<unordered_set>
using namespace std;

// 取数值各个位上的单数平方之和
int getSum(int n)
{
	int sum = 0;
	while (n)
	{
		sum += (n % 10) * (n % 10);
		n /= 10;
	}
	return sum;
}

bool isHappy(int n)
{
	unordered_set<int>set;
	while (1)
	{
		int sum = getSum(n);
		if (sum == 1)
		{
			return true;
		}

		// 如果sum曾经出现过,说明已经陷入无限循环了,立即return false
		if (set.find(sum) != set.end())
		{
			return false;
		}
		else
		{
			set.insert(sum);
		}
		n = sum;
	}
}

int main() {

	int num = 82;
	bool result = isHappy(num);
	cout << "result:" << result << endl;
}
posted @   香花草的味道  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示