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);
}
}