华为-自守数

(java实现)


题目描述:

自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n以内的自守数的个数
接口说明
/*
功能: 求出n以内的自守数的个数
输入参数:
int n
返回值:
n以内自守数的数量。
/
public static int CalcAutomorphicNumbers( int n)
{
/*在这里实现功能
/

return 0;
}
本题有多组输入数据,请使用while(cin>>)等方式处理

输入描述:

int型整数

输出描述:

n以内自守数的数量。
示例1:

输入

2000

输出

8

问题分析:

思路一:通过数学计算来实现。
思路二:将数字转为字符串,进行字符串匹配。

相关知识:

思路二:
Java中的int与String互相转换方式
一、String转int有两种方式
(1)Integer.parseInt(str)
(2)Integer.valueOf(str).intValue()
二、int转String有三种方式
(1)num + ""
(2)String.valueOf(num)
(3)Integer.toString(num)
使用第一种方法相对第二第三种耗时比较大
String.valueOf():采用String.valueOf(object)的基础是Object#toString(),但这里不用担心object是否为null这一问题,JDK中String#valueOf(object)源码:


参考代码:

思路一实现:

import java.util.*;
public class Main {

    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        while (input.hasNext())
        {
            int n = input.nextInt();
            System.out.println(CalAutomorphicNumbers(n));
        }
    }

    public static int CalAutomorphicNumbers(int n)
    {

        if (0==n)
        {
            return 1;
        }
        int count = 1;
        for (int i=1; i<=n; i++)
        {
            String str = Integer.toString(i);
            int len = str.length();
            int tmp = (int)(i*i/(Math.pow(10,len)));
            tmp = (int)(tmp*Math.pow(10,len)) + i;
            if (tmp == i*i)
                count++;
        }
        return count;
    }
}

思路二实现:

import java.util.*;
public class Main {

    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        while (input.hasNext())
        {
            int num = input.nextInt();
            int sum = 0;
            for (int i=0; i<=num; i++)
            {
                String s1 = Integer.toString(i);
                String s2 = Integer.toString(i*i);
                int pos = s2.length() - s1.length();
                if (s1.equals(s2.substring(pos)))
                    sum++;
            }
            System.out.println(sum);
        }


    }
}
全部评论

相关推荐

10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务