“蓝桥杯“练习系统题解大全

2022.4.29第十三届蓝桥杯省赛二等,就刷了这么多题
所以大家放心冲


基础练习

请特别注意,Java的主类名必须是Main。试题提交答案的时候把自己的类名改成Main

算法训练

BASIC-13

数列排序

import java.util.Arrays;
import java.util.Scanner;

public class Example1 {
    
    
public static void main(String args[]){
    
    
	Scanner scanner=new Scanner(System.in);
	int num=scanner.nextInt();
	int []arrys=new int [num];
	for(int i=0;i<num;i++){
    
    
		arrys[i]=scanner.nextInt();
	}
	Arrays.sort(arrys);
	for(int i=0;i<num;i++){
    
    
		System.out.print(arrys[i]+" ");
	}
}
}

BASIC-12

in.next() 从缓冲区接收字符遇到空格后停止。 相当于 cin 和 scanf

in.nextLine() 从缓冲区接收字符,并且接收空格,遇到换行才停止,并且会自动舍弃换行。 相当于 gets()

十六进制转八进制

import java.util.Scanner;

public class Main {
    
    
	public static void main(String[] args) {
    
    
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		String[] str = new String[n];
		for (int i = 0; i < n; i++)
			str[i] = scanner.next();//不能用nextline
		scanner.close();
		for (int j = 0; j < n; j++) {
    
    
			String strBinary=toBarry(str[j]);
			//模3补0
			if(strBinary.length()%3==2){
    
    
				strBinary="0"+strBinary;
			}
			else if(strBinary.length()%3==1){
    
    
				strBinary="00"+strBinary;
			}
			String ss=toOctal(strBinary);
			System.out.println(ss);
		}
	}

	// 十六进制转二进制
	private static String toBarry(String s) {
    
    
		int len = s.length();
		StringBuffer sBuffer = new StringBuffer();
		for (int i = 0; i < len; i++) {
    
    
			switch (s.charAt(i)) {
    
    
			case '0':
				sBuffer.append("0000");
				break;
			case '1':
				sBuffer.append("0001");
				break;
			case '2':
				sBuffer.append("0010");
				break;
			case '3':
				sBuffer.append("0011");
				break;
			case '4':
				sBuffer.append("0100");
				break;
			case '5':
				sBuffer.append("0101");
				break;
			case '6':
				sBuffer.append("0110");
				break;
			case '7':
				sBuffer.append("0111");
				break;
			case '8':
				sBuffer.append("1000");
				break;
			case '9':
				sBuffer.append("1001");
				break;
			case 'A':
				sBuffer.append("1010");
				break;
			case 'B':
				sBuffer.append("1011");
				break;
			case 'C':
				sBuffer.append("1100");
				break;
			case 'D':
				sBuffer.append("1101");
				break;
			case 'E':
				sBuffer.append("1110");
				break;
			case 'F':
				sBuffer.append("1111");
				break;

			}
		}
		return sBuffer.toString();

	}

	// 二进制转八进制
private static String toOctal(String strBinary) {
    
    
		int len1 = strBinary.length();
		int k = 0;
		// 看看前三位是否为000
		if (strBinary.substring(0, 3).equals("000"))
			k = 3;
		StringBuffer sBuffer = new StringBuffer();
		for (; k < len1-2; k += 3) {
    
    
			switch (strBinary.substring(k, k + 3)) {
    
    
			case "000":
				sBuffer.append("0");
				break;
			case "001":
				sBuffer.append("1");
				break;
			case "010":
				sBuffer.append("2");
				break;
			case "011":
				sBuffer.append("3");
				break;
			case "100":
				sBuffer.append("4");
				break;
			case "101":
				sBuffer.append("5");
				break;
			case "110":
				sBuffer.append("6");
				break;
			case "111":
				sBuffer.append("7");
				break;
			default:
				break;
			}
		}
		return sBuffer.toString();
	}
}

BASIC-11

十六进制转十进制

import java.util.Scanner;
public class Main {
    
    
	public static void main(String[] args) {
    
    
		Scanner scanner = new Scanner(System.in);
		String string=scanner.next();
		int len=string.length();
		long a=0l;//int范围不够了
		for(int i=0;i<len;i++){
    
    
			switch (string.charAt(i)) {
    
    
			case '1':
				a+=1*Math.pow(16, len-i-1);break;
			case '2':
				a+=2*Math.pow(16, len-i-1);break;
			case '3':
				a+=3*Math.pow(16, len-i-1);break;
			case '4':
				a+=4*Math.pow(16, len-i-1);break;
			case '5':
				a+=5*Math.pow(16, len-i-1);break;
			case '6':
				a+=6*Math.pow(16, len-i-1);break;
			case '7':
				a+=7*Math.pow(16, len-i-1);break;
			case '8':
				a+=8*Math.pow(16, len-i-1);break;
			case '9':
				a+=9*Math.pow(16, len-i-1);break;
			case 'A':
				a+=10*Math.pow(16, len-i-1);break;
			case 'B':
				a+=11*Math.pow(16, len-i-1);break;
			case 'C':
				a+=12*Math.pow(16, len-i-1);break;
			case 'D':
				a+=13*Math.pow(16, len-i-1);break;
			case 'E':
				a+=14*Math.pow(16, len-i-1);break;
			case 'F':
				a+=15*Math.pow(16, len-i-1);break;

			default:
				break;
			}
		}
		System.out.println(a);
		//System.out.println(Long.valueOf(string,16));
		//System.out.println(Long.parseLong(string,16));
}
}

BASIC-10

十进制转十六进制

import java.util.Scanner;

public class Main {
    
    
public static void main(String[] args) {
    
    
	Scanner scanner = new Scanner(System.in);
	int n=scanner.nextInt();
	System.out.println(Long.toHexString(n).toUpperCase());
}
}

BASIC-9

特殊回文数

import java.util.Scanner;
public class Main {
    
    
public static void main(String[] args) {
    
    
	Scanner scanner=new Scanner(System.in);
	int n=scanner.nextInt();
	for(int i=10001;i<=99999;i++){
    
    
		int a=i/10000;
		int b=i/1000%10;
		int c=i/100%10;
		int d=i/10%10;
		int e=i%10;
		if(a==e&&b==d&&a+b+c+d+e==n){
    
    
			System.out.println(i);
		}
	}
	for(int i=100001;i<=999999;i++){
    
    
		int a=i/100000;
		int b=i/10000%10;
		int c=i/1000%10;
		int d=i/100%10;
		int e=i/10%10;
		int f=i%10;
		if(a==f&&b==e&&c==d&&(a+b+c)*2==n){
    
    
			System.out.println(i);
		}
	}
		
}
}

BASIC-8

回文数

public class Main {
    
    
public static void main(String[] args) {
    
    
for(int i=1;i<10;i++){
    
    
	for(int j=0;j<10;j++){
    
    
		System.out.println(i+""+j+""+j+""+i);
	}
}
		
}
}

BASIC-7

特殊的数字

public class Main {
    
    
public static void main(String[] args) {
    
    
	for(int i=101;i<999;i++){
    
    
		if(Judge(i))
			System.out.println(i);
	}
}
public static int Lfang(int n){
    
    
	return n*n*n;
}
public static boolean Judge(int m){
    
    
	int a1=m/100;
	int a2=m/10%10;
	int a3=m%10;
	if(Lfang(a1)+Lfang(a2)+Lfang(a3)==m)
	return true;
	else return false;
}
}

BASIC-6

杨辉三角

import java.util.Scanner;
public class Main {
    
    
public static void main(String[] args) {
    
    
	Scanner scanner=new Scanner(System.in);
	int n=scanner.nextInt();
	int [][]an=new int [35][35];
	an[1][1]=1;
	an[2][1]=1;
	for(int i=1;i<=n;i++){
    
    
		an[i][1]=1;
		for(int j=2;j<=i;j++)
			an[i][j]=an[i-1][j]+an[i-1][j-1];
	}
	for(int k=1;k<=n;k++){
    
    
		for(int d=1;d<=k;d++){
    
    
			System.out.print(an[k][d]+" ");
		}
		System.out.println();
	}
}	
}

BASIC-5

查找整数

import java.util.Arrays;
import java.util.Scanner;
public class Main {
    
    
public static void main(String[] args) {
    
    
	Scanner scanner=new Scanner(System.in);
	int n=scanner.nextInt();
	int []an=new int[n+1];
	for(int i=1;i<n+1;i++){
    
    
		an[i]=scanner.nextInt();
	}
	int k=scanner.nextInt();
	int j;
	for( j=1;j<n+1;j++){
    
    
		if(an[j]==k){
    
    
			System.out.println(j);
			break;
		}
	}
	if(j==n+1){
    
    
		System.out.println(-1);
	}
	
}	
}

BASIC-4

数列特征

import java.util.Scanner;
public class Main {
    
    
public static void main(String[] args) {
    
    
	Scanner scanner=new Scanner(System.in);
	int n=scanner.nextInt();
	int sum=0;//用于计算之和
	int max=0;
	int min=0;
	int temp;
	for(int i=0;i<n;i++){
    
    
		temp=scanner.nextInt();
	if(i==0){
    
    
		max=min=temp;
	}
	if(temp>max){
    
    
		max=temp;
	}
	else if(temp<min){
    
    
		min=temp;
	}
	sum+=temp;
	}
	System.out.println(max);
	System.out.println(min);
	System.out.println(sum);
	
}	
}

BASIC-3

字母图形

import java.util.Scanner;

public class Main {
    
    
public static void main(String[] args) {
    
    
	char []str=new char[27];
	str[0]='A';
	for (int i = 1; i < str.length; i++) {
    
    
		str[i]=(char)(str[i-1]+1);
	}
	Scanner scanner=new Scanner(System.in);
	int num1=scanner.nextInt();
	int num2=scanner.nextInt();
	for(int i=1;i<num1+1;i++){
    
    
		for(int j=1;j<num2+1;j++)
			System.out.print(str[Math.abs(j-i)]);
		System.out.println();
	}
	}
}

BASIC-2

01字串

public class Main{
    
    
		public static void main(String[] args){
    
    
		for(int i=0;i<32;i++){
    
    
			System.out.print(i%32/16);
			System.out.print(i%16/8);
			System.out.print(i%8/4);
			System.out.print(i%4/2);
			System.out.println(i%2);
		}
	}
}

BASIC-1

闰年判断

import java.util.Scanner;
/*1. 年份是4的倍数而不是100的倍数;

2. 年份是400的倍数。

其他的年份都不是闰年。*/
public class Main {
    
    
public static void main(String[] args) {
    
    
	Scanner scanner=new Scanner(System.in);
	int year=scanner.nextInt();
	if(year%4==0&&year%100!=0){
    
    
		System.out.println("yes");
	}
	else if(year%400==0){
    
    
		System.out.println("yes");
	}
	else{
    
    
		System.out.println("no");
	}
}
}

BASIC-04

Fibonacci数列

import java.util.Scanner;
public class Main {
    
    
public static void main(String[] args) {
    
    
	Scanner scanner=new Scanner(System.in);
	int n=scanner.nextInt();
	int []a=new int[1000001];
	//要计算只包含加法、减法和乘法的整数表达式除以正整数n的余数
	//可以在每步计算之后对n取余,结果不变
	a[1]=1;
	a[2]=1;
	a[3]=2;
	for(int i=4;i<=n;i++)
		a[i] = (a[i-1]+a[i-2])%10007;
	System.out.println(a[n]);
		
}
}

BASIC-03

圆的面积

输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。

import java.util.Scanner;
public class Main {
    
    
public static void main(String[] args) {
    
    
	Scanner scanner=new Scanner(System.in);
	int n=scanner.nextInt();
	double m=n*n*Math.PI;
	System.out.println(String.format("%.7f", m));//结果保留七位小数,已四舍五入
	//法二
	/*DecimalFormat f=new DecimalFormat("0.0000000");
	System.out.println(f.format(m));
	*/	
}
}

BASIC-02

序列求和

import java.util.Scanner;
public class Main {
    
    
public static void main(String[] args) {
    
    
	Scanner scanner=new Scanner(System.in);
	long l=scanner.nextLong();
	System.out.println((l+1)*l/2);
}
}

算法提高

历届试题

猜你喜欢

转载自blog.csdn.net/huadong_xiaolin/article/details/122376302