zoukankan      html  css  js  c++  java
  • Happy Number

    Description:

    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

    Code:

     1  bool isHappy(int n) {
     2         /*这道题的核心问题在于怎么判断是否为死循环。可以考虑:如果重复出现一个数字则说明将陷入死循环
     3         一个int型数据经计算后的最大值为9*9*10=810.因此有810个数据需要记录。
     4         备注:刚开始,有想到这个思路,但是没有分析到一个int型数据经计算后的最大值为9*9*10=810,所需空间并没有想象中那么大。
     5         */
     6         int result = 0;
     7         int data[1000] = {0};
     8         while (1)
     9         {
    10             result = 0;
    11             while (n)
    12             {
    13                 result += (n%10)*(n%10);
    14                 n = n/10;
    15             }
    16             if (result == 1)
    17                 return true;
    18             else
    19             {
    20                 if (data[result] == 1)
    21                     return false;
    22                 else
    23                     data[result] = 1;
    24             }
    25             n = result;
    26         }
    27     }

     PS:

    16位整数:-32768到32767

    32位整数中:-2147483648到2147 483 647

  • 相关阅读:
    android连接wifi模块
    idea 控制台乱码debug
    线程控制
    jvm 垃圾回收
    java 单例模式
    http报头
    java 构造函数 , 参数传递 , lamda表达式
    mysql 杂识
    spring mvc 配置 拦截器不起作用
    spring mvc 每次请求后是否自动销毁线程
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4598838.html
Copyright © 2011-2022 走看看