马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 糖逗 于 2020-5-8 17:56 编辑
题目描述:编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。
如果 n 是快乐数就返回 True ;不是,则返回 False 。
示例:
输入:19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/happy-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
#include <iostream>
#include <map>
#include <algorithm>
#include <string>
using namespace std;
bool isHappy(int n) {
map<int, int> store;
while(n != 1){
int temp = 0;
string temp1 = to_string(n);
for(int i = 0; i < temp1.size(); i++){
temp += pow(temp1[i]-'0', 2);
}
store[temp]++;
if(store[temp] > 1) return false;
n = temp;
}
return true;
}
int main(void){
int input;
cin >> input;
cout << isHappy(input) << endl;
return 0;
}
|