蓝桥杯JAVA-试题-基础练习

一、十六进制转八进制

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述
  给定n个十六进制正整数,输出它们对应的八进制数。

输入格式
  输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式
  输出n行,每行为输入对应的八进制正整数。

  【注意
  输入的十六进制数不会有前导0,比如012A。
  输出的八进制数也不能有前导0。

样例输入
  2
  39
  123ABC

样例输出
  71
  4435274

  提示
  先将十六进制数转换成某进制数,再由某进制数转换成八进制。

解题思路

 输入十六进制转八进制,java支持十六进制转二进制或十进制,和二进制或十进制转八进制

因此要中转一下

本题目如果使用Integer和String会超数据域,因此引入BigInteger类

BigInteger这个类,是超巨整数类,整数域能达到2的2的32次方,很适合在十六进制转换时使用,具体操作请看代码

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        //int[] a=new int[n];
        for (int i = 0; i < n; i++) {
            String a=in.next();
            BigInteger big=new BigInteger(a,16);//输入16进制数
            System.out.println(big.toString(8));//输出转八进制数
        }
    }
}

若不考虑数据域,使用Integer和String把十六进制转十进制再转八进制,请看以下代码 

String sixteen=in.next();
String eight=Integer.toOctalString((Integer.parseInt(sixteen,16)));
System.out.println(eight);

 

 二、试题 基础练习 十六进制转十进制

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        //int n=in.nextInt();
        //int[] a=new int[n];
        //for (int i = 0; i < n; i++) {
            String a=in.next();
            BigInteger big=new BigInteger(a,16);
            System.out.println(big.toString(10));
        //}
    }
}

 若不考虑数据域,使用Integer和String把十六进制转十进制,请看以下代码 

String sixteen=in.next();
int ten=Integer.parseInt(sixteen,16);
System.out.println(ten);

 

三、十进制转十六进制

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。

输入格式

  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647

输出格式

  输出这个整数的16进制表示

样例输入

30

样例输出

1E

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Locale;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        //int n=in.nextInt();
        //int[] a=new int[n];
        //for (int i = 0; i < n; i++) {
            String a=in.next();
            BigInteger big=new BigInteger(a,10);
            System.out.println(big.toString(16).toUpperCase(Locale.ROOT));
        //}
    }
}

若不考虑数据域,使用Integer和String把十进制转十六进制,请看以下代码  

int ten=in.nextInt();
String sixteen=Integer.toHexString(ten);

 

四、特殊回文数

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式

  输入一行,包含一个正整数n。

输出格式

  按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入

52

样例输出

899998
989989
998899

数据规模和约定

  1<=n<=54。

解题思路

本题有两个条件:

1.回文数

2.各个位数的和为它本身

因此就制造两个函数,分别实现两个判断功能

最后在循环里跑起来就可以了 

import java.util.*;
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=10000;i<1000000;i++)
        {
            if(isIt(i))
            {
                if(getSum(i)==n)
                    System.out.println(i);
            }
        }
    }
    public static boolean isIt(int n)
    {
        String s=Integer.toString(n);
        for(int i=0,j=s.length()-1;i<j;i++,j--)
        {
            if(s.charAt(i)!=s.charAt(j))
                return false;
        }
        return true;
    }
    public static int getSum(int n)
    {
        int sum=0;
        while(n>0)
        {
            sum+=(n%10);
            n/=10;
        }
        return sum;
    }

}

五、回文数

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输出格式

  按从小到大的顺序输出满足条件的四位十进制数。

思路

这题是刚才的削弱版,同理 

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        for(int i=1000;i<10000;i++)
        {
            if(isIt(i))
                System.out.println(i);
        }
    }
    public static boolean isIt(int n)
    {
        String s=Integer.toString(n);
        for(int i=0,j=s.length()-1;i<j;i++,j--)
        {
            if(s.charAt(i)!=s.charAt(j))
                return false;
        }
        return true;
    }
}

六、杨辉三角

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

  

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

  

下面给出了杨辉三角形的前4行:

  

   1

  

  1 1

  

 1 2 1

  

1 3 3 1

  

给出n,输出它的前n行。

输入格式

输入包含一个数n。

输出格式

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

样例输入

4

样例输出

1
1 1
1 2 1
1 3 3 1

数据规模与约定

1 <= n <= 34。

解题思路

杨辉三角的规则:

第一行为1,

第二行为11,

从第三行开始往后每一行,边界都为1,每一行从第2个数到第n-1个数为上一行的相邻数依次相加得到,如图

 

实现的过程中,记住我给出的原理小的时候

记录上一行,留给下一行计算使用

二维列表法 

使用List实现的优势:
1. 更灵活:List的长度可以动态增长,不需要提前指定数组的大小。
2. 更易于操作:List提供了丰富的方法,如add、clear等,方便对数据进行操作。
3. 可读性更好:使用List可以更直观地表示数据结构,代码可读性更高。

使用List实现的劣势:
1. 性能较差:List的底层是基于数组实现的,相比直接使用数组会有一定的性能损失。
2. 内存占用较大:List在动态增长时可能会造成内存碎片,占用更多内存空间。

 

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        List<List<Integer>> list=Triangle(n);
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<list.get(i).size();j++)
            {
                if(j==0)
                    System.out.print(list.get(i).get(j));
                else
                    System.out.print(" "+list.get(i).get(j));

            }
            System.out.println();
        }
    }
    public static List<List<Integer>> Triangle(int n)
    {
        List<List<Integer>> list=new ArrayList<>();
        if(n==0)
            return null;
        List<Integer> row=new ArrayList<>();//上一行
        List<Integer> now=new ArrayList<>();//现在这行
        row.add(1);//初始化上一行为第一行:1
        for(int i=0;i<n;i++) {
            list.add(new ArrayList<>(row));
            now.clear();//清空本行
            now.add(1);//本行左边界1
            for(int j=0;j<row.size()-1;j++)
            {
                now.add(row.get(j)+row.get(j+1));
            }
            now.add(1);//本行右边界1
            row.clear();//清空上一行
            row.addAll(now);//把本行数据赋给上一行,也就是说,当前行变成上一行了
        }
        return list;
    }
}

二维数组法

使用数组实现的优势:
1. 性能更好:数组在内存中是连续存储的,访问元素速度更快。
2. 内存占用更小:数组的大小是固定的,不会因动态增长而产生额外开销。

使用数组实现的劣势:
1. 不够灵活:数组长度固定,需要提前指定大小,不适合动态增长的情况。
2. 操作复杂:需要手动处理数组的边界情况,代码相对复杂一些。

 

import java.util.*;

public class Main{
	public static void main(String args[]){
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		int arr[][]=new int[n][n];
		for(int i=0;i<n;i++) {
			for(int j=0;j<i+1;j++) {
				arr[i][j]=1;
				if(i>=1&&j>=1) {
					arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
				}
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}
}

综合来看,如果数据规模较小且代码可读性更重要,可以选择使用List实现;如果需要处理大规模数据且性能要求较高,可以选择使用数组实现。在实际应用中,根据具体需求和场景选择合适的实现方式会更加合适。 

 

七、查找整数

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

输出格式

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入

6
1 9 4 8 3 9
9

样例输出

2

数据规模与约定

1 <= n <= 1000。

解题思路

本题其实就是在数组里找一个数,找到了返回位置,找不到返回-1

常规做法就是for循环

但如何不用for循环呢?

那就用java的列表,使用查找ArrayList.indexOf() 

import java.util.ArrayList;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        ArrayList<Integer> list=new ArrayList<>();
        for (int i = 0; i < n; i++) {
            list.add(in.nextInt());
        }
        int m=in.nextInt();
        int i=list.indexOf(m)>-1 ? list.indexOf(m)+1 : -1;
        System.out.println(i);
    }
}

八、数列特征

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

给出n个数,找出这n个数的最大值,最小值,和。

输入格式

第一行为整数n,表示数的个数。
第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

输出格式

输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。

样例输入

5
1 3 -2 4 5

Data

样例输出

5
-2
11

Data

数据规模和约定

1 <= n <= 10000。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int[] a=new int[n];
        int sum=0;
        for (int i = 0; i < n; i++) {
            a[i]=in.nextInt();
            sum+=a[i];
        }
        Arrays.sort(a);
        System.out.println(a[n-1]);
        System.out.println(a[0]);
        System.out.println(sum);
    }
}

九、字母图形

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式

输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。

输出格式

输出n行,每个m个字符,为你的图形。

样例输入

5 7

样例输出

ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

数据规模与约定

1 <= n, m <= 26。

解题思路

这题做的我是真想骂人

题目的意思其实就是,输入两个数N行 M列

这个数M代表第一行的字母数,比如M=7,第一行就是ABCDEFG

N代表行数

题目要从第二行开始,在A的左边遍历字母到Z,每一行多遍历一个字母,最多到Z

比如这样:

24 7

ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
FEDCBAB
GFEDCBA
HGFEDCB
IHGFEDC
JIHGFED
KJIHGFE
LKJIHGF
MLKJIHG
NMLKJIH
ONMLKJI
PONMLKJ
QPONMLK
RQPONML
SRQPONM
TSRQPON
UTSRQPO
VUTSRQP
WVUTSRQ
XWVUTSR

 您猜我以为是啥?

我以为是在第一行的基础上,循环遍历第一行的字母,像一个圈一样,右边走了到左边

呈现这样的效果:

24 7
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
FEDCBAB
GFEDCBA
FGFEDCB
EFGFEDC
DEFGFED
CDEFGFE
BCDEFGF
ABCDEFG
GABCDEF
AGABCDE
BAGABCD
CBAGABC
DCBAGAB
EDCBAGA
FEDCBAG
GFEDCBA
FGFEDCB
EFGFEDC
DEFGFED

按我自己读题的思路,代码是这样的:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt(),m= in.nextInt();
        int sum=0;
        LinkedList<Character> list=new LinkedList<>();
        LinkedList<Character> list1=new LinkedList<>();
        char[] a=new char[m];
        for (int i = 0; i < m; i++) {
            a[i]=(char)(i+'A');
        }
        for (int i = 0; i < m; i++) {
            list.add((char)(i+'A'));
        }
        for(int i=0;i<n;i++)
        {
            if(i==0)
            {
                Print(list);
                continue;
            }
            list1.clear();
            list1.addAll(rt(i,list,a));
            list.clear();
            list.addAll(list1);
            Print(list);

        }
    }
    public static LinkedList<Character> rt(int n,LinkedList<Character> list,char[] a)
    {
        int count=0;
        if(a[n%a.length]=='A'||a[n%a.length]==a[a.length-1])
        {
            if((n+1)/a.length%2==0)
                list.addFirst(a[(n)%a.length]);
            else
                list.addFirst(a[a.length-1-((n+1)%a.length)]);
            count++;
        }
        else
        {
            if(n/a.length%2==0)
                list.addFirst(a[(n+count)%a.length]);
            else
                list.addFirst(a[a.length-1-((n+count+1)%a.length)]);
        }
        list.removeLast();
        return list;
    }
    public static void Print(LinkedList<Character> list)
    {
        for (Character c : list) {
            System.out.print(c);
        }
        System.out.println();
    }
}

 按题目的意思代码是这样的

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        char[][] a = new char[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                a[i][j]=(char) ('A'+Math.abs(i-j));//给A加上i-j的绝对值
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                System.out.print(a[i][j]);
            }
            System.out.println();
        }
    }
}

家人们谁懂啊!!!!! 

十、01字串

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

输入格式

本试题没有输入。

输出格式

输出32行,按从小到大的顺序每行一个长度为5的01串。

样例输出

00000
00001
00010
00011
<以下部分省略>

解题思路

这道题就是从0到31输出二进制数 

先搞一个for循环,把每一个int数转换成二进制的字符串,再把字符串转化成int

保留五位输出即可

public class Main {
    public static void main(String[] args) {
        for(int i=0;i<32;i++)
        {
            String s=Integer.toBinaryString(i);
            int a=Integer.valueOf(s);
            System.out.printf("%05d\n",a);
        }
    }
}

十一、阶乘计算(vip)

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  输入一个正整数n,输出n!的值。
  其中n!=1*2*3*…*n

算法描述

  n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数aA[0]表示a的个位,A[1]表示a的十位,依次类推。
  将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。
  首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。

输入格式

  输入包含一个正整数nn<=1000。

输出格式

  输出n!的准确值。

样例输入

10

样例输出

3628800

解题思路

一看这个数据域,n<=1000就知道,这题不简单,涉及到超大整数

1000的阶乘,这得多大啊

我们就想到了java的BigInteger类

补充BigInteger类的方法 

变量和类型方法描述
BigIntegerabs()

返回一个BigInteger,其值是此BigInteger的绝对值。

BigIntegeradd​(BigInteger val)

返回一个值为 (this + val)的BigInteger。

BigIntegerand​(BigInteger val)

返回值为 (this & val)的BigInteger。

BigIntegerandNot​(BigInteger val)

返回值为 (this & ~val)的BigInteger。

intbitCount()

返回此BigInteger的二进制补码表示中与其符号位不同的位数。

intbitLength()

返回此BigInteger的最小二进制补码表示中的位数, 不包括符号位。

bytebyteValueExact()

BigInteger转换为 byte ,检查是否丢失了信息。

BigIntegerclearBit​(int n)

返回一个BigInteger,其值等于此BigInteger且指定位已清除。

intcompareTo​(BigInteger val)

将此BigInteger与指定的BigInteger进行比较。

BigIntegerdivide​(BigInteger val)

返回值为 (this / val)的BigInteger。

BigInteger[]divideAndRemainder​(BigInteger val)

返回两个BigIntegers的数组,其中包含 (this / val)后跟 (this % val)

doubledoubleValue()

将此BigInteger转换为 double

booleanequals​(Object x)

将此BigInteger与指定的Object进行相等性比较。

BigIntegerflipBit​(int n)

返回一个BigInteger,其值等于此BigInteger,并且指定的位被翻转。

floatfloatValue()

将此BigInteger转换为 float

BigIntegergcd​(BigInteger val)

返回一个BigInteger,其值是 abs(this)abs(val)

intgetLowestSetBit()

返回此BigInteger中最右边(最低位)一位的索引(最右边一位右边的零位数)。

inthashCode()

返回此BigInteger的哈希码。

intintValue()

将此BigInteger转换为 int

intintValueExact()

将此 BigInteger转换为 int ,检查是否丢失了信息。

booleanisProbablePrime​(int certainty)

返回 true如果此BigInteger可能为素数, false ,如果它一定为合。

longlongValue()

将此BigInteger转换为 long

longlongValueExact()

将此 BigInteger转换为 long ,检查是否丢失了信息。

BigIntegermax​(BigInteger val)

返回此BigInteger和 val

BigIntegermin​(BigInteger val)

返回此BigInteger和 val

BigIntegermod​(BigInteger m)

返回一个值为 (this mod m的BigInteger。

BigIntegermodInverse​(BigInteger m)

返回BigInteger,其值为 (this -1 mod m)

BigIntegermodPow​(BigInteger exponent, BigInteger m)

返回一个值为 (thisexponent mod m)的BigInteger。

BigIntegermultiply​(BigInteger val)

返回值为 (this * val)的BigInteger。

BigIntegernegate()

返回值为 (-this)的BigInteger。

BigIntegernextProbablePrime()

返回大于此 BigInteger的第一个整数,该整数可能是素数。

BigIntegernot()

返回一个值为 (~this)的BigInteger。

BigIntegeror​(BigInteger val)

返回一个值为 (this | val)的BigInteger。

BigIntegerpow​(int exponent)

返回值为 (thisexponent)的BigInteger。

static BigIntegerprobablePrime​(int bitLength, Random rnd)

使用指定的bitLength返回可能为素数的正BigInteger。

BigIntegerremainder​(BigInteger val)

返回一个值为 (this % val)的BigInteger。

BigIntegersetBit​(int n)

返回一个BigInteger,其值等于此BigInteger并设置了指定的位。

BigIntegershiftLeft​(int n)

返回值为 (this << n)的BigInteger。

BigIntegershiftRight​(int n)

返回值为 (this >> n)的BigInteger。

shortshortValueExact()

将此 BigInteger转换为 short ,检查是否丢失了信息。

intsignum()

返回此BigInteger的signum函数。

BigIntegersqrt()

返回此BigInteger的整数平方根。

BigInteger[]sqrtAndRemainder()

返回两个BigIntegers的数组,其中包含 s的整数平方根 this及其余部分 this - s*s

BigIntegersubtract​(BigInteger val)

返回值为 (this - val)的BigInteger。

booleantestBit​(int n)

当且仅当指定位置位时,返回 true

byte[]toByteArray()

返回一个包含此BigInteger的二进制补码表示的字节数组。

StringtoString()

返回此BigInteger的十进制String表示形式。

StringtoString​(int radix)

返回给定基数中此BigInteger的String表示形式。

static BigIntegervalueOf​(long val)

返回一个BigInteger,其值等于指定的 long

BigIntegerxor​(BigInteger val)

返回值为 (this ^ val)的BigInteger。

import java.math.BigInteger;
import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        String a=Integer.toString(n);
        BigInteger big=new BigInteger(a);
        int b=0;
        for (int i = n-1; i >0; i--) {
            big=big.multiply(new BigInteger(Integer.toString(i)));
        }
        System.out.println(big);
    }
    
}

十二、高精度加法(vip)

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  输入两个整数ab,输出这两个整数的和。ab都不超过100位。

算法描述

  由于ab都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。
  定义一个数组AA[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b
  计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。
  最后将C输出即可。

输入格式

  输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。

输出格式

  输出一行,表示b的值。

样例输入

20100122201001221234567890
2010012220100122

样例输出

20100122203011233454668012

import javax.sound.midi.Soundbank;
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String a=in.next();
        String b=in.next();
        BigInteger big1=new BigInteger(a);
        BigInteger big2=new BigInteger(b);
        System.out.println(big1.add(big2));
    }
}

十三、矩阵乘法(vip)

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  给定一个N阶矩阵A,输出A的M次幂(M是非负整数)
  例如:
  A =
  1 2
  3 4
  A的2次幂
  7 10
  15 22

输入格式

  第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数
  接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值

输出格式

  输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开

样例输入

2 2
1 2
3 4

样例输出

7 10
15 22

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int m=in.nextInt();
        int[][] a=new int[n][n];

        for (int i = 0; i < n; i++) {
            for (int i1 = 0; i1 < n; i1++) {
                a[i][i1]=in.nextInt();
            }
        }
        if(m==0)
        {
            for (int i = 0; i < n; i++) {
                for (int i1 = 0; i1 < n; i1++) {
                    if(i1==i)
                        System.out.print(1+" ");
                    else
                        System.out.print(0+" ");
                }
                System.out.println();
            }
            return;
        }
        int[][] res=a;
        for (int i = 1; i < m; i++) {
            res=getMatrix(a,res);
        }
        for (int i = 0; i < n; i++) {
            for (int i1 = 0; i1 < n; i1++) {
                System.out.print(res[i][i1]+" ");
            }
            System.out.println();
        }
    }
    static int[][] getMatrix(int[][] a,int[][] res)
    {
        int n=a.length;
        int[][] b=new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int i1 = 0; i1 < n; i1++) {
                for (int i2 = 0; i2 < n; i2++) {
                    b[i][i1]+=a[i][i2]*res[i2][i1];
                }
            }
        }
        return b;
    }
}

十四、字符串对比(vip)

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:
  1:两个字符串长度不等。比如 Beijing 和 Hebei
  2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
  3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
  4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
  编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。

输入格式

  包括两行,每行都是一个字符串

输出格式

  仅有一个数字,表明这两个字符串的关系编号

样例输入

BEIjing

beiJing

样例输出

3

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String str=in.next();
        String str1=in.next();
        System.out.println(Judge(str,str1));
    }
    static int Judge(String str,String str1)
    {
        if(str.length()!=str1.length())
            return 1;
        if(str.equals(str1))
            return 2;
        if(str.toLowerCase().equals(str1.toLowerCase()))
            return 3;
        return 4;

    }
}

十五、时间转换

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  给定一个以秒为单位的时间t,要求用“<H>:<M>:<S>”的格式来表示这个时间。<H>表示时间,<M>表示分钟,而<S>表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。

输入格式

  输入只有一行,是一个整数t(0<=t<=86399)。

输出格式

  输出只有一行,是以“<H>:<M>:<S>”的格式所表示的时间,不包括引号。

样例输入

0

样例输出

0:0:0

样例输入

5436

样例输出

1:30:36


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int t=in.nextInt();
        int h=t/3600;
        int m=t/60%60;
        int s=t%60;
        System.out.println(h+":"+m+":"+s);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/488941.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI老人跌倒监测报警摄像机

AI老人跌倒监测报警摄像机是一种基于人工智能技术的智能监控设备&#xff0c;专门用于监测老年人的跌倒情况并提供实时报警功能&#xff0c;以及时处理紧急情况&#xff0c;保障老人安全。这种摄像机利用先进的AI算法和深度学习技术&#xff0c;能够实时监测老人的行为&#xf…

Linux下的I/O模型

目录 一、什么是IO&#xff1f; 二、IO操作的两个阶段 三、五种I/O模型 1、阻塞I/O(blocking I/O) 2、非阻塞I/O(non-blocking I/O) 3、多路复用I/O(multiplexing I/O) 4、信号驱动I/O(signal-driven I/O) 5、异步I/O(asynchronous I/O) 四、五种I/O模型比较 一、什么…

ElasticSearch启动报错:Exception in thread “main“ SettingsException

Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]]; 这个报错说明elasticsearch.yml这个配…

Java虚拟机运行原理

在 Java 中新建一个类Test&#xff1a; class Test {int a; }在Main方法中创建两个 Test 对象&#xff0c;并给 a 赋不同的值。 写一个 exchange 方法&#xff0c;在方法中交换两个Test 对象&#xff0c;最后输出两个对象中 a 的值。 public class Main {public static void…

OpenCV4.9的是如何进行图像操作

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV4.9矩阵上的掩码操作 下一篇&#xff1a;使用 OpenCV 添加&#xff08;混合&#xff09;两个图像 输入/输出 C 图像 从文件加载图像 Mat img imread(filename); 如…

NVIDIA 宣布推出适用于人形机器人的 GR00T 项目基础模型和主要 Isaac 机器人平台更新

NVIDIA 宣布推出适用于人形机器人的 GR00T 项目基础模型和主要 Isaac 机器人平台更新 Isaac 机器人平台现为开发人员提供新的机器人训练模拟器、Jetson Thor 机器人计算机、生成式 AI 基础模型以及 CUDA 加速感知和操作库 GTC — NVIDIA 今天宣布推出 GR00T 项目&#xff0c;这…

【数据分享】1929-2023年全球站点的逐月平均露点(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全球气象站…

为什么有些网站会提示不安全,提示您与此网站之间建立的连接不安全

有时候当我们尝试访问一个网站时&#xff0c;浏览器会弹出一个警告&#xff0c;提示“您与此网站之间建立的连接不安全”。这是什么意思&#xff1f;这种网站真的不安全吗&#xff1f; 理解HTTP与HTTPS HTTP&#xff08;超文本传输协议&#xff09;是互联网上用于传输数据的基…

利用sin/cos原理驱动步进电机

利用sin/cos原理控制步进电机转动 前言什么是步进电机驱动器细分控制电机内部结构图片步进电机驱动原理&#xff08;重要&#xff09;步进电机参数&#xff11;、步距角&#xff1a;收到一个脉冲转动的角度&#xff12;、细分数 &#xff1a;&#xff11;&#xff0f;&#xf…

qrcode插件-生成二维码

安装 yarn add qrcodejs2 --save npm install qrcodejs2 --save 使用 <template><div><div id"qrcodeImg"></div><!-- 创建一个div&#xff0c;并设置id --></div> </template> <script> import QRCode from q…

【超图 SuperMap3D】【基础API使用示例】52、超图SuperMap3D - 绘制点|线|多边形面的缓冲区

前言 引擎下载地址&#xff1a;[添加链接描述](http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?id2524) 绘制缓冲区主要依赖[turfjs](https://turfjs.org/docs/#buffer) 先根据点线面的数据turfjs计算得到缓冲区的坐标数据&#xff0c;再行绘制效果 完整代…

《深入Linux内核架构》第3章 内存管理(3)

目录 3.3 页表 3.3.1 数据结构 3.3.2 特定于PTE的信息 3.3.3 页表项的创建和操作 3.3 页表 页表作用&#xff1a; 将虚拟地址转换为物理地址。 内核总是使用四级页表。所以如果体系架构只支持两级页表&#xff0c;则需模拟第三和第四级页表。 四级页表&#xff1a; PGD&am…

pycharm连接服务器运行时找不到文件或目录

选择你要修改的python interpreter 进入下图界面&#xff0c;默认选择的是Deployment configuration,需要将其改成SSH。 再将上图python interpreter path和pycharm helpers path 配置成服务器上相应地址即可。 over

【Java项目】基于jspssm的高校二手交易平台

目录 背景 技术简介 系统简介 界面预览 背景 随着互联网技术的不断进步&#xff0c;高校二手交易市场通过网络平台得到了显著的扩展。开发这一平台时&#xff0c;首要任务是深入挖掘并满足用户的实际需求&#xff0c;通过精准把握用户需求来构建一个专门化的高校二手交易系…

基于Django(python+sql)的校园二手交易系统设计与实现(完整程序+开题报告+论文)

随着互联网的迅猛发展&#xff0c;校园内的二手交易市场也逐渐呈现出蓬勃的发展态势。学生们在校园生活中会产生大量的闲置物品&#xff0c;而其他学生也有可能需要这些物品。本论文研究了校园二手交易系统的需求分析、系统实现和测试三个部分&#xff0c;旨在提高校园二手交易…

10.测试教程-性能测试loadrunner1

文章目录 1.LoadRunner的安装2.Loadrunner的基本概念3.开发测试脚本3.1录制基本的用户脚本3.2插入事务3.3插入集合点3.4参数化输入3.5插入函数3.6插入检查点3.7运行时设置3.8单机运行测试脚本 4.玩转三个测试工具4.1Virtual User Generator(此处讲解和3.1是一致的)4.2Controlle…

简单破除github的2FA验证

简单破除github的2FA验证 文章目录 简单破除github的2FA验证&#x1f468;‍&#x1f3eb;Authenticator工具 &#x1f468;‍&#x1f3eb;Authenticator工具 最近使用github的时候发现要搞一个2FA的验证才可以 验证的途径有两种&#xff1a;一种是用手机电话验证&#xff0c;…

Java基于微信小程序的校园请假系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#…

HTML作业2

作业1: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>table…

金三银四面试题(四):Full GC 和 Minor GC

如何触发Full GC&#xff1f;这是面试中的高频题。同样了解Full GC和Minor GC对于理解Java应用程序的性能和内存管理非常重要。 区分 GC 在此之前&#xff0c;我们要搞清楚&#xff0c;什么是Full GC&#xff0c;什么是Minor GC&#xff1f; Minor GC Minor GC是Java虚拟机…