LeetCode 202. Happy Number (迭代,各位平方和)

来源:互联网 发布:mac系统如何格式化u盘 编辑:程序博客网 时间:2024/06/14 05:58

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
输入一个数,判断是否是happy number。happy number的定义是:对于一个数字,求各位的平方和,然后继续以上过程,如果中间结果是1则是happy number;如果陷入死循环,则不是happy number。

思路:按照步骤逐位计算平方再求和。当n迭代到个位数时,利用先验知识:个位数中只有1和7是happy number,如果是1或7则返回true,否则返回false。

    bool isHappy(int n) {        int sum=0;        while(n>=10)        {            while(n)            {                sum+=pow(n%10,2);                n/=10;            }            n=sum;            sum=0;        }        if(n==1||n==7)return 1;        else return 0;    }

原创粉丝点击