【蓝桥杯-筑基篇】基础入门

系列专栏:蓝桥杯

个人主页:个人主页

目录

1.数位翻转

2.三个数求最大值的写法

3.两数交换的几种方法

4.身份证第18位合法性校验

5.黑洞数(陷阱数)


1.数位翻转

如: 整数 12345 返回结果为整数: 54321

当第一次看到这个题时,脑子里有3种反转方法:

​ 1、采用取余的方法,把每一位的值都抽取出来。

    public static void main(String[] args) {
        //如: 整数 12345 返回结果为整数: 54321
        int number=12345;
        int sum=0;
        while (number>0){
            sum=sum*10+number % 10;
            number=number/10;

        }
        System.out.println(sum);

    }

​ 2、第二种是把这个整数转换成一个数组,然后在进行反转。

    public static void main(String[] args) {
        //如: 整数 12345 返回结果为整数: 54321
        int number = 12345;
        String s = String.valueOf(number);
        char[] array = s.toCharArray();
        for (int i = array.length-1; i >=0; i--) {
            System.out.print(array[i]);
        }
    }

​ 3、第三种是 用   reverse() 进行字符串翻转

    public static void main(String[] args) {
        //如: 整数 12345 返回结果为整数: 54321
        int number = 12345;
        System.out.println(new StringBuilder(String.valueOf(number)).reverse().toString());


    }

2.三个数求最大值的写法

调用Math中的的max

public class Test {
    public static void main(String[] args) {
        int a=10;
        int b=5;
        int c=29;
        getMax(a,b,c);
    }

    private static void getMax(int a, int b, int c) {
        System.out.println(Math.max(Math.max(a, b), c));
    }

}

3.两数交换的几种方法

​ 1、定义一个临时变量

    public static void main(String[] args) {
        int a=10;
        int b=5;
        int temp=0;
        System.out.println("交换前:a:"+a+"  b:"+b);
        temp=a;
        a=b;
        b=temp;
        System.out.println("交换后:a:"+a+"  b:"+b);


    }

​ 2、采用加减法

    public static void main(String[] args) {
        int a=10;
        int b=5;
        System.out.println("交换前:a:"+a+"  b:"+b);
        a=a=b;
        b=a-b;
        a=a-b;
        System.out.println("交换后:a:"+a+"  b:"+b);


    }

​ 3、异或运算

    public static void main(String[] args) {
        int a=10;
        int b=5;
        System.out.println("交换前:a:"+a+"  b:"+b);
        a=a^b;
        b=a^b;
        a=a^b;
        System.out.println("交换后:a:"+a+"  b:"+b);


    }

【蓝桥杯-筑基篇】基础入门_第1张图片

4.身份证第18位合法性校验

身份证第18位(校验码)的计算方法

1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

2、将这17位数字分别和系数相乘的结果相加。

3、用加出来的值  对11取余,看余数是多少。

4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2。

5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。

例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。

首先我们得出前17位的乘积和是189,然后用189除以11得出的结果是17+2/11,也就是说其余数是2。最后通过对应规则就可以知道余数2对应的数字是x。所以,可以判定这是一个合格的身份证号码。

    public static void main(String[] args) {
        int[] weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
        String[] last={"1","0","X","9","8","7","6","5","4","3","2"};
        Scanner scanner = new Scanner(System.in);
        String idCard= scanner.nextLine();
        char[] array = idCard.toCharArray();
        int sum=0;
        for (int i = 0; i < array.length-1; i++) {
            sum=(array[i]-'0')*weight[i]+sum;
        }
        
        
        sum=sum%11;
        if (last[sum].equals(idCard.substring(17,18))){
            System.out.println("yes");
        }
        else System.out.println("no");


    }

【蓝桥杯-筑基篇】基础入门_第2张图片
 

5.黑洞数(陷阱数)

计算过程,给定一个数字,从大到小排列后减去从小到大排列,经过若干次运算后终得到一个固定的整数,三位数的黑洞495,四位数的黑洞6174等等。 

    public static void main(String[] args) {
        int number=2023;
        int count=0;

        while (true){
            String s = String.valueOf(number);
            int[] array = new int[s.length()];

            for (int i = 0; i < array.length; i++) {
                array[i] = Integer.parseInt(String.valueOf(s.charAt(i)));
            }
            System.out.println(Arrays.toString(array));
            Arrays.sort(array);
            System.out.println(Arrays.toString(array));
            int max=0;
            int min=0;

            for (int i = 0; i < array.length; i++) {
                min=array[i]+min*10;
            }
            for (int i = array.length-1; i >=0; i--) {
                max=max*10+array[i];
            }


            System.out.println(max+"  "+min);
            number=max-min;
            count++;
            if (count==20){
                break;
            }

        }







    }

【蓝桥杯-筑基篇】基础入门_第3张图片

你可能感兴趣的:(蓝桥杯,蓝桥杯,职场和发展)