蓝桥杯题目
可能不是最佳算法,不过也是能计算出来的,如果不会,算能提供一种思维。
- 闰年判断
- 01子串
- 字母图形
- 数列特征
- 查找整数
- 杨辉三角形
- 特殊的数字
- 回文数
- 特殊回文数
- 十进制转十六进制
- 十六进制转十进制
- 十六进制转八进制
- 数列排序
- 阶乘计算
- 高精度加法
1、闰年判断
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
if (a%4==0&&a%100!=0||a%400==0) {
System.out.println("yes");
}
else {
System.out.println("no");
}
}
}
2、01子串
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
for (int j2 = 0; j2 < 2; j2++) {
for (int k = 0; k <2; k++) {
for (int k2 = 0; k2 <2; k2++) {
System.out.print(i+""+j+""+j2+""+k+""+k2);
System.out.println();
}
}
}
}
}
}
}
3、字母图形
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
char[]ch={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
int x=Math.abs(i-j);
System.out.print(ch[x]);
}
System.out.println();
}
}
}
4、数列特征
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int[] arr = new int[a];
int sum = 0;
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
int min = arr[0];
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (max <= arr[i]) {
max = arr[i];
}
if (min >= arr[i]) {
min = arr[i];
}
sum = sum + arr[i];
}
System.out.println(max);
System.out.println(min);
System.out.println(sum);
}
}
5、查找整数
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int flag=-1;
int[] arr = new int[a];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
int b = sc.nextInt();
for (int i = 0; i < arr.length; i++) {
if (b == arr[i]){
flag=i+1;
break;
}}
System.out.println(flag);
}
}
下面的这种算法蓝桥杯系统没通过,但是我感觉是对的,编译器上能显示出正确结果,可供参考。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int[] arr = new int[a];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
int result = get(arr);
System.out.println(result);
}
public static int get(int[] arr) {
Scanner sc = new Scanner(System.in);
int b = sc.nextInt();
for (int i = 0; i < arr.length; i++) {
if (b == arr[i])
return i + 1;
}
return -1;
}
}
6、杨辉三角形
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] arr = new int[n][n];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || i == j)
arr[i][j] = 1;
else {
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
7、特殊的数字
public class Main {
public static void main(String[] args) {
for(int a=1;a<10;a++) {
for(int b=0;b<10;b++) {
for(int c=0;c<10;c++) {
int n=100*a+b*10+c;
if(n==a*a*a+b*b*b+c*c*c) {
System.out.println(n);
}
}
}
}
}
}
8、回文数
public class Main {
public static void main(String[] args) {
int a,b,c,d,n;
for(n=1000;n<10000;n++) {
a=n/1000;
b=n/100%10;
c=n%100/10;
d=n%10;
if(a==d&&b==c) {
System.out.println(n);
}
}
}
}
9、特殊的回文数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
for (int i = 10000; i < 1000000; i++) {
String s1 = String.valueOf(i);
char[] ch = s1.toCharArray();
if (ch.length == 5 && ch[0] == ch[4] && ch[1] == ch[3]) {
int ss = ch[0] + ch[1] + ch[2] + ch[3] + ch[4] - 48 * 5;
if (a == ss) System.out.println(ch);
} else if (ch.length == 6 && ch[0] == ch[5] && ch[1] == ch[4] && ch[2] == ch[3]) {
int ss1 = ch[0] + ch[1] + ch[2] + ch[3] + ch[4] + ch[5] - 48 * 6;
if (a == ss1)
System.out.println(ch);
}
}
}
}
10、十进制转十六进制
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
System.out.println(Integer.toHexString(a).toUpperCase());
}
}
11、十六进制转十进制
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String s=in.next();
System.out.println(Long.parseLong(s, 16));
}
}
12、十六进制转八进制
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 0; i < n; i++) {
String str = sc.next();
String binarySt = toBinary(str);
int len1 = binarySt.length();
if(len1%3==1) binarySt = "00"+binarySt;
if(len1%3==2) binarySt = "0"+binarySt;
String ansSt = toOctal(binarySt);
System.out.println(ansSt);
}
}
private static String toBinary(String str) {
StringBuilder ans = new StringBuilder();
int len = str.length();
for(int i = 0; i < len; i++) {
switch(str.charAt(i)) {
case '0': ans.append("0000");break;
case '1': ans.append("0001");break;
case '2': ans.append("0010");break;
case '3': ans.append("0011");break;
case '4': ans.append("0100");break;
case '5': ans.append("0101");break;
case '6': ans.append("0110");break;
case '7': ans.append("0111");break;
case '8': ans.append("1000");break;
case '9': ans.append("1001");break;
case 'A': ans.append("1010");break;
case 'B': ans.append("1011");break;
case 'C': ans.append("1100");break;
case 'D': ans.append("1101");break;
case 'E': ans.append("1110");break;
case 'F': ans.append("1111");break;
default : break;
}
}
return ans.toString();
}
private static String toOctal(String str) {
StringBuilder ans = new StringBuilder();
int len = str.length(),k;
if(str.substring(0, 3).equals("000"))
k=3;
else
k=0;
for(int i = k; i <= len - 3; i += 3) {
switch(str.substring(i,i + 3)) {
case "000": ans.append("0");break;
case "001": ans.append("1");break;
case "010": ans.append("2");break;
case "011": ans.append("3");break;
case "100": ans.append("4");break;
case "101": ans.append("5");break;
case "110": ans.append("6");break;
case "111": ans.append("7");break;
default : break;
}
}
return ans.toString();
}
}
13、数列排序
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++){
a[i]=in.nextInt();
}
Arrays.sort(a);
for(int i = 0 ; i < n ;i++){
System.out.print(a[i]+" ");
}
}
}
14、阶乘计算
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
BigInteger num=new BigInteger("1");
BigInteger flat=new BigInteger("1");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
for (int i = 0; i < n; i++) {
flat=flat.multiply(num);
num=num.add(new BigInteger("1"));
}
System.out.println(flat);
}
}
15、 高精度加法
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
BigInteger a1 = sc.nextBigInteger();
BigInteger a2 = sc.nextBigInteger();
BigInteger b=a1.add(a2);
System.out.println(b);
}
}