首页 > 其他 > 详细

自守数

时间:2020-08-12 17:41:03      阅读:77      评论:0      收藏:0      [点我收藏+]

题目描述

自守数是指一个数的平方的尾数等于该数自身的自然数。例如: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

思路:(我只想到了把字符串转换切割,并没有想到 0,1,5,6,太难过了)
只有以0、1、5、6结尾的才可能是自守数。
判断方法:把对应数及其平方转为字符串,截取其平方最后对应位数的字符串与原数比较,相等则为自守数。
import java.util.Scanner;

public class Main{

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            int five_end = 5;
            int one_end = 1;
            int six_end = 6;
            int zero_end = 0;
            int count = 0;
            if(n == 0){
                System.out.println(1);
            }else if(n == 1){
                System.out.println(2);
            }
            for(int i = 6; i < n; i += 10){
                if(judge(zero_end)){
                    count++;
                }
                if(judge(one_end)){
                    count++;
                }
                if(judge(five_end)){
                    count++;
                }
                if(judge(i)){
                    count++;
                }
                zero_end += 10;
                one_end += 10;
                five_end += 10;
            }
            System.out.println(count);
        }
    }

    public static boolean judge(int n){
        String pow =Integer.toString(n * n);
        String self = Integer.toString(n);
        int index = pow.length() - self.length();
        if(pow.substring(index).equals(self)){
            return true;
        }
        return false;
    }
}

利用正则表达式

import java.util.Scanner;
public class Test99 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            int selfHoldNumber = 0;
            for (int i = 0; i <= n; i++) {
                if (((int) Math.pow(i, 2) + "").matches("[0-9]*" + i + "$")) {
                    selfHoldNumber++;
                }
            }
            System.out.println(selfHoldNumber);
        }
    }
}

 

自守数

原文:https://www.cnblogs.com/hisoka-study/p/13491627.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!