首页 > 试题广场 >

自守数

[编程题]自守数
  • 热度指数:145507 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n(包括n)以内的自守数的个数


数据范围:




输入描述:

int型整数



输出描述:

n以内自守数的数量。

示例1

输入

6

输出

4

说明

有0,1,5,6这四个自守数      
示例2

输入

1

输出

2

说明

有0, 1这两个自守数     
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int count = 0;
        for(int i = 0; i <= n; i++){
            if((i * i +"").endsWith(i+"")){
                count++;
            }
        }
        System.out.println(count);
    }
}

发表于 2023-11-28 20:45:08 回复(0)
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line;

        while ((line = br.readLine()) != null) {
            int n = Integer.parseInt(line);

            int count = 0;
            for (int i = 0; i <= n; i++) {
                // 计算平方
                int n2 = i * i;
                // 转换为字符串
                String n2Str = String.valueOf(n2);
                String iStr = String.valueOf(i);
                
                // 从平方结果中截取最后n位,n = i的长度
                String sub = n2Str.substring(n2Str.length() - iStr.length());
                if (Integer.parseInt(sub) == i) {
                    //System.out.println(i);
                    count++;
                }
            }

            System.out.println(count);
        }
    }
}

发表于 2023-08-15 11:23:46 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int sum = 0;
    
        for (int i = 0; i <= n; i++) {
            int pow = i * i;
            if (String.valueOf(pow).endsWith(String.valueOf(i))) {
                sum++;
            }
        }
        System.out.println(sum);
    }
}

发表于 2023-08-10 15:50:25 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int count = 0;
            for (int j = 0; j <= a; j++) {
                int c = j * j;
                if (String.valueOf(c).endsWith(String.valueOf(j))) {
                    count ++;
                }
            }
            System.out.println(count);
        }
    }
}

发表于 2023-06-08 16:56:32 回复(0)
import java.util.Scanner;
import java.util.Stack;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int res = 2;
        for (int i = 2; i <= n; i++) {
            char[] c1 = String.valueOf(i).toCharArray();
            int len1 = c1.length - 1;
            int m = i * i;
            char[] c2 = String.valueOf(m).toCharArray();
            int len2 = c2.length - 1;
            while (len1 >= 0 && c1[len1] == c2[len2]) {
                len1--;
                len2--;
            }
            if (len1 == -1) {
                res++;
            }
        }
        System.out.println(res);
    }
}
发表于 2023-03-16 14:59:42 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int n= in.nextInt();
        int count=0;
        for(int i=0; i<=n; i++){
            if(isZiShou(i)){count++;}
        }
        System.out.println(count);
    }

    public static boolean isZiShou(int n){
        return String.valueOf(n*n).endsWith(String.valueOf(n));
    }
}
发表于 2023-02-27 13:56:53 回复(0)
import java.util.Scanner;
import java.lang.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int num1 = in.nextInt();
        int count = 0;
        for(int i=0;i<=num1;i++){
            int num2 = (int)Math.pow(i,2);
            int len1 = String.valueOf(i).length();
            String str = String.valueOf(num2);
            String s = str.substring(str.length()-len1,str.length());
            if(i == Integer.valueOf(s)){
                count++;
            }
        }
        System.out.println(count);
    }
}
发表于 2023-02-08 09:51:45 回复(0)
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            int b = in.nextInt();
            int count = 0;
            for(int i=0;i <=b;i++){
                String c = ""+i*i;
                String d = ""+i;
                if(c.substring(c.length()-d.length(),c.length()).equals(d)){
                    count++;
                }
            }
            System.out.println(count);
        }
    }
}
发表于 2022-11-13 01:37:24 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(),cnt = 0;
        for(int i = 0;i <= n;i ++ ){
            if((i*i+"").endsWith(i+"")) cnt++;
        }
        System.out.print(cnt);
    }
}


发表于 2022-09-25 12:35:03 回复(0)
import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int count = 0;
        for (int i = 0; i <= n; i++) {
            int num2 = (int) Math.pow(i, 2);//多次方
            String strNum = String.valueOf(i);
            String strNum2 = String.valueOf(num2);
            if (strNum.equals(strNum2.substring(strNum2.length() - strNum.length()))) {
//                System.out.println(i);
                count++;
            }
        }
        System.out.println(count);
    }
}
发表于 2022-08-05 10:33:38 回复(0)
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 count = 0;
            for (int i = 0; i <= n; i++) {
                String numStr = i * i + "";
                if (numStr.endsWith(i + "")) {
                    count++;
                }
            }
            System.out.println(count);
        }
    }
}
发表于 2022-07-10 12:00:04 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
        int nextInt = sc.nextInt();
        int count = 0;
        for (int i = 0; i <= nextInt ; i++) {
            String s1 = String.valueOf(i);
            int num = i*i;
            String s = String.valueOf(num);
                String substring = s.substring(s.length()-s1.length());
                if (s1.equals(substring)){
                    count++;
                }
        }
        System.out.println(count);
    }
}
发表于 2022-06-26 23:59:29 回复(0)
发表于 2022-06-16 15:17:37 回复(0)
// 我这个简单好理解,输入的数等于10、100、1000的余数(就是尾数)就可以了。
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int sum =0;
         // 注意 while 处理多个 case
            int n = sc.nextInt();
            
            for(int m=0;m<=n;m++){
                
                if(m>=0&m<=3 && m*m==m){
                    sum++;
                }else
                    if(m>=4&&m<10&&m==m*m%10){
                    sum++;
                    }else
                        if(m>=10&&m<100&&m==m*m%100){
                            sum++;
                    }else 
                        if(m>=100&&m<1000&m==m*m%1000){
                            sum++;
                        }else
                            if(m>=1000&&m<10000&m==m*m%10000){
                                sum++;
                            }
                
                
            }
       
            
        
        
        System.out.println(sum);
    }
}
发表于 2022-06-14 08:38:35 回复(0)
 int[] arr ={0,1,5,6,25,76,376,625,9376}; 枚举就可以解决
发表于 2022-05-29 20:53:49 回复(0)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 自守数
 */
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int count = 0;
        for (int i = 0; i <= n; i++) {
            if (check(i)) {
                count++;
            }
        }
        System.out.println(count);
    }
    private static boolean check(int n) {
        int result = n * n;
        char[] nChars = Integer.toString(n).toCharArray();
        char[] resultChars = Integer.toString(result).toCharArray();
        for (int i = nChars.length - 1; i >= 0; i--) {
            if (nChars[i] != resultChars[(resultChars.length - 1) - ((nChars.length - 1 ) - i)]) {
                return false;
            }
        }
        return true;
    }
}

发表于 2022-05-08 23:24:45 回复(0)
将 i 和  i * i  转为字符串进行比较,查看i与i*i的末尾是否相同即可。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int n = sc.nextInt();
            int count = 0;
            for (int i = 0; i <= n; i++) {
                String str = String.valueOf(i * i);
                String index = String.valueOf(i);
                // 比较 i的值是否与i*i的最后相同
                if (index.equals(str.substring(str.length() - index.length()))) {
                    count++;
                }
            }
            System.out.println(count);
        }
    }
}


发表于 2022-05-05 07:43:17 回复(0)
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int count = 0;
        
        for(int i=0; i<=n; i++){
            String nPow = String.valueOf((int)Math.pow(i, 2));
//             System.out.print(i + " : " + nPow + " ");
            String nStr = String.valueOf(i);
            nPow = nPow.substring(nPow.length()-nStr.length(), nPow.length()); 
//             System.out.println(nPow + " " + nStr);
            if(nStr.equals(nPow)) count++;
        }
        System.out.println(count);
    }
}

发表于 2022-04-22 20:19:24 回复(0)