find the happy numeber

题目描述:

编写一个算法来判断一个数是不是“快乐数”。

一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。

示例:

输入: 19
输出: true
解释:
1^2 +9^2 = 82
8^2 +2^2= 68
6^2 +8^2 = 100
1^2 +0^2 + 0^2 = 1

题目分析

主要思路是循环计算每一位的平方和相加,在有限次的循环下,看是否得出1来,主要问题是如何讲一个多位数分成1位一位的,很简单的方法是对10的n次方取余,然后取出每一位数的值,但是这样比较麻烦,所以主要的方法是将多位数转化为字符,然后在取出字符中的每一位,进而进行运算

c++代码

class Solution {
public:
    bool isHappy(int n) {
        string  str;
        int tmp = n;
        for(int i=0;i<6;i++)//i取6其实是有点取巧,6轮以后如果还没有收敛,那么这个数就不是快乐数,当然你只要是大于6的都可以,不过占的空间可能会更多而已
        {
            str = to_string(tmp);
            tmp = 0;
            for(auto c : str)
            {
                tmp += (c-'0') * (c-'0');
            }
            if(tmp == 1)
                return true;
        }
        return false;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,652评论 0 5
  • 小学奥数的知识点约 80个,总体上可以分为五大类。数论和行程问题是小 学奥数学习中的重点也是难点。 一、 计算能力...
    ADolphin阅读 8,123评论 1 3
  • 2017年第22届华杯赛初赛眼看着就要来了,翻过年就该2017成都小升初择校了,很多家长在后台问小升初考哪些数学知...
    1a068af8ad5a阅读 583评论 0 1
  • 【青莲堂日话】160101 文/effelee 每日一话,是为日话。 拖着疲惫不堪的身心,和衣酣睡,凌晨三点被身旁...
    effelee阅读 116评论 0 0
  • 大雨 7月29日 星期一 大雨 今天一大早,外面的小雨便变成了大雨。 ...
    飞向蓝天_6c94阅读 59评论 0 1