第六十陆题

By admin in 4858.com on 2019年4月11日

编写二个算法来判定四个数是还是不是“欢悦数”。

题目

写二个算法来判断3个数是还是不是”欢腾数”。

二个数是或不是其乐融融是这么定义的:对于二个正整数,每趟将该数替换为她每一种岗位上的数字的平方和,然后再次那一个进程直到那一个数成为一,或是无限循环但始终变不到1。尽管得以改为一,那么那么些数正是开心数。

第六十陆题。样例
19 就是3个快乐数。

1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

描述

写二个算法来判断二个数是否”欢喜数”。

三个数是还是不是心潮澎湃是这么定义的:对于一个正整数,每二次将该数替换为她各种岗位上的数字的平方和,然后再一次那几个历程直到那么些数成为一,或是无限循环但始终变不到一。如果得以成为一,那么这么些数正是欢喜数。

写一个算法来判断三个数是或不是”兴奋数”。
一个数是还是不是开心是那般定义的:对于1个正整数,每1次将该数替换为他每种岗位上的数字的平方和,然后再一次那一个进度直到那几个数成为壹,或是Infiniti循环但始终变不到壹。假使能够成为1,那么那几个数就是快乐数。

4858.com ,一个“欢乐数”定义为:对于二个正整数,每二次将该数替换为它每一种地点上的数字的平方和,然后再次那几个进程直到那几个数成为
一,也只怕是Infiniti循环但始终变不到 一。假设得以改为
一,那么那些数正是欢愉数。

代码

public class Solution {
    /**
     * @param n an integer
     * @return true if this is a happy number or false
     */
    public boolean isHappy(int n) {
        // Write your code here
        while(true)
        {
            n = numSum(n);
            if(n == 4)
            {
                break;
            }

            if(n == 1)
            {
                return true;
            }
        }
        return false;
    }

    int numSum(int n)
    {
        int sum = 0;
        int x;
        while(n != 0)
        {
            x = n % 10;
            n = n /10;
            sum += x * x;
        }

        return sum;
    }
}

public class Solution {
    /**
     * @param n an integer
     * @return true if this is a happy number or false
     */
    public boolean isHappy(int n) {
        // Write your code here
        HashSet<Integer> hash = new HashSet<Integer>();
        while (n != 1) {
            if (hash.contains(n)) {
                return false;
            }
            hash.add(n);
            n = getNextHappy(n);
        }
        return true;
    }

    private int getNextHappy(int n) {
        int sum = 0;
        while (n != 0) {
            sum += (n % 10) * (n % 10);
            n /= 10;
        }
        return sum;
    }
}

样例

19 便是3个欢跃数。

1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

4858.com 1

class Solution:
    def isHappy(self, n):
        """
        :type n: int
        :rtype: bool
        """
        happySet = set([1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97])
        while n>99:
            n = sum([int(x) * int(x) for x in list(str(n))])
        return n in happySet

实现

public class Test {

    public static boolean isHappy(int n) {
        // write your code here
        List<Integer> list = new ArrayList<>();
        list.add(n);

        int tmp = fun(n);
        while (tmp != 1) {
            if (list.contains(tmp)) {
                return false;
            } else {
                list.add(tmp);
                tmp = fun(tmp);
            }
        }
        return true;

    }

    private static int fun(int n) {
        int tmp = 0;
        tmp = (n % 10) * (n % 10);
        while (n / 10 != 0) {
            n = n / 10;
            tmp += Math.pow((n % 10), 2);
        }
        return tmp;
    }

}

请关切作者的村办网址:https://zhujiaqqq.github.io/

image.png

 

class Solution {

public:
    /**
     * @param n an integer
     * @return true if this is a happy number or false
     */
    bool isHappy(int n) {
        // Write your code here
        int sum = n;

        while(true)
        {
            sum = numSum(sum);
            if(sum == 4)
            {
                break;
            }

            if(sum == 1)
            {
                return true;
            }
        }


        return false;
    }

    int numSum(int n)
    {
        int sum = 0;
        int x;
        while(n != 0)
        {
            x = n % 10;
            n = n /10;
            sum += x * x;
        }

        return sum;
    }
};

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有