zoukankan      html  css  js  c++  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

    思路:(我只想到了把字符串转换切割,并没有想到 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);
            }
        }
    }
  • 相关阅读:
    一个用于录制用户输入操作并实时回放的小工具
    Ubuntu 14.04 下安装wiznote客户端
    lombok @EqualsAndHashCode 注解的影响
    初始化数据库和导入数据
    com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别 serverTimezone设定
    fastjson如何指定字段不序列化
    Mybatis 查询tinyint(1)的数据库字段时会自动转换成boolean类型
    Maven中settings.xml的配置项说明
    logback的使用和logback.xml详解
    解决Eureka Server不踢出已关停的节点的问题
  • 原文地址:https://www.cnblogs.com/hisoka-study/p/13491627.html
Copyright © 2011-2022 走看看