VIP题没做qwq~ 没得money!
注意!注意!注意!
以下题目在蓝桥杯里全部都是满分通过。
class类,必须命名为Main!
class类,必须命名为Main!
class类,必须命名为Main!
例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
}
}
BASIC-01 | A+B问题 |
问题描述
输入A、B,输出A+B。
说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标。
import java.util.Scanner;
public class BASIC01 {
// 输入A、B,输出A+B。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int A = scanner.nextInt();
int B = scanner.nextInt();
System.out.println(A+B);
}
}
BASIC-13 | 数列排序 |
问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
import java.util.Scanner;
public class BASIC13 {
// 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
// 创建一个arr的数组
int[] arr = new int[n];
// arr数组赋值
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
// 排序
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
if (arr[i]>arr[j]) {
int T = arr[i];
arr[i] = arr[j];
arr[j] = T;
}
}
}
// 打印
for (int i = 0; i < n - 1; i++) {
System.out.print(arr[i]+" ");
}
// 打印最后一个,取消空格
System.out.print(arr[n-1]);
}
}
BASIC-12 | 十六进制转八进制 |
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
import java.math.BigInteger;
import java.util.Scanner;
public class BASIC12 {
// 给定n个十六进制正整数,输出它们对应的八进制数。
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
// n 来定义个数
int n =scanner.nextInt();
// 创建 c的数组
String[] c = new String[n];
// 赋值
for (int i = 0; i < n; i++) {
c[i] = scanner.next();
}
// 打印
for (int i = 0; i < n; i++) {
System.out.println(new BigInteger(c[i],16).toString(8));
}
}
}
BASIC-11 | 十六进制转十进制 |
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
public class BASIC11 {
// 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
// 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
String c = scanner.next();
System.out.println(new BigInteger(c,16).toString(10));
}
}
BASIC-10 | 十进制转十六进制 |
问题描述
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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。
给出一个非负整数,将它表示成十六进制的形式。
import java.math.BigInteger;
import java.util.Locale;
import java.util.Scanner;
public class BASIC10 {
// 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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。
// 给出一个非负整数,将它表示成十六进制的形式。
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
String c = scanner.next();
System.out.println(new BigInteger(c,10).toString(16).toUpperCase(Locale.ROOT));
}
}
解释一下BigInteger
原文链接蓝桥杯: 给定n个十六进制正整数,输出它们对应的八进制数。_balder_girl的博客-CSDN博
BASIC-9 | 特殊回文数 |
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
import java.util.Scanner;
public class BASIC9 {
// 123321是一个非常特殊的数,它从左边读和从右边读是一样的。
// 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
// 五位数遍历
for (int i = 10000; i < 100000; i++) {
int a = i/10000;//万位
int b = i%10000/1000;//千位
int c = i%1000/100;//百位
int d = i%100/10;//十位
int e = i%10;//个位
if(a==e&&b==d&&a+b+c+d+e==n) System.out.println(i);
}
// 六位数遍历
for (int j = 100000; j < 1000000; j++) {
int a = j%10;//个位
int b = j%100/10;//十位
int c = j%1000/100;//百位
int d = j%10000/1000;//千位
int e = j%100000/10000;//万位
int f = j/100000;//十万位
if(a==f&&b==e&&c==d&&a+b+c+d+e+f==n) System.out.println(j);
}
}
}
BASIC-8 | 回文数 |
问题描述
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
public class BASIC8 {
// 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
public static void main(String[] args) {
for (int i = 1000; i < 10000; i++) {
int a = i/1000;//万位
int b = i%1000/100;//白位
int c = i%100/10;//十位
int d = i%10;//个位
if(a==d && b==c) System.out.println(i);
}
}
}
BASIC-7 | 特殊的数字 |
问题描述
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
public class BASIC7 {
// 153是一个非常特殊的数,它等于它的每位数字的立方和,
// 即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
int a = i%10; //个位
int b = i/10%10; //十位
int c = i/100; //百位
if (a*a*a+b*b*b+c*c*c == i) System.out.println(i);
}
}
}
BASIC-6 | 杨辉三角形 |
问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
public class BASIC6 {
// 杨辉三角形
// 一共用了两种方法
public static void main(String[] args) {
BASIC6 basic6 = new BASIC6();
// basic6.d2(); 或者 basic6.d1(); 调用
basic6.d2();
}
public void d2(){
// 第二种方法
Scanner scanner = new Scanner(System.in);
int row = scanner.nextInt();
int[][] arr = new int[row][];
for (int i = 0; i < row; i++) {
arr[i] = new int[i+1];
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i){
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();
}
}
public void d1() {
// 第一种方法
Scanner scanner =new Scanner(System.in);
int n = scanner.nextInt();
int[][] a = new int[n][n];
for (int i = 0; i < n; i++) {
// 边缘先改为1
a[i][0] = a[i][i] = 1;
// 不是边缘的用前排的两个相加,计算下一个
if (i>0){
for (int j = 1; j < i; j++) {
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
// 遍历
for (int k = 0; k <= i; k++) {
System.out.print(a[i][k]+" ");
}
// 换行回车
System.out.println();
}
}
}
BASIC-5 | 查找整数 |
问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
import java.util.Scanner;
public class BASIC5 {
// 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
// 定义n个 arr数组
int[] arr = new int[n];
// 挨个赋值
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
// f为计数
int f=0;
int a = scanner.nextInt();
for (int i = 0; i < n; i++) {
f++;
// 找到a的时候输出f记述,并直接结束程序
if (arr[i] == a) {
System.out.println(f);
return;
}
// 如果a不在数列中,那就输出-1
if (f==n){
f=-1;
System.out.println(f);
return;
}
}
}
}
BASIC-4 | 数列特征 |
问题描述
给出n个数,找出这n个数的最大值,最小值,和。
import java.util.Scanner;
public class BASIC4 {
// 给出n个数,找出这n个数的最大值,最小值,和。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int max = 0;
int sum = 0;
// 赋一个输入的值
int min = max = sum = scanner.nextInt();
// 从第二个开始循环
for (int i = 1; i < n; i++) {
int a = scanner.nextInt();
// 相加
sum = a + sum;
// 找出最大值
if (max < a) max = a;
// 找出最小值
if (min > a) min = a;
}
// 打印
System.out.println(max);
System.out.println(min);
System.out.println(sum);
}
}
BASIC-3 | 字母图形 |
问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
import java.util.Scanner;
// 一共写了两张方法
public class BASIC3 {
// 利用字母可以组成一些美丽的图形,下面给出了一个例子:
// ABCDEFG
// BABCDEF
// CBABCDE
// DCBABCD
// EDCBABC
// 这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
public static void main(String[] args) {
BASIC3 basic3 =new BASIC3();
// basic3.nb1(); 或者 basic3.nb2();切换方法
basic3.nb1();
}
public void nb2() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();//行
int m = sc.nextInt();//列
char c = 'A';
int i = 0;
while (i < n) {
char d = c;
int k = -1;
for (int j = 0; j < m; j++) {
if (j == 0)
System.out.print(d);
else {
if (d == 'A')
k = 1;
d = (char) (d + k);
System.out.print(d);
}
}
System.out.println();
i++;
c++;
}
}
public void nb1() {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int f = -1;
for (int i = 0; i < n; i++) {
f++;
// 打印减少的
// j<m 是为了防止后面多出来的
for (int j = 0; j < f && j < m; j++) {
System.out.print((char)(65+f-j));
}
// 打印增加的
for (int j = 0; j < m-f; j++) {
System.out.print((char) (65+j));
}
System.out.println();
}
}
}
BASIC-2 | 01字串 |
问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
public class BASIC2 {
// 问题描述
// 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
// 00000
// 00001
// 00010
// 00011
// 00100
// 请按从小到大的顺序输出这32种01串。
public static void main(String[] args) {
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
for (int k = 0; k < 2; k++)
for (int m = 0; m < 2; m++)
for (int n = 0; n < 2; n++) System.out.println(""+i+j+k+m+n);
}
}
BASIC-1 | 闰年判断 |
问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。
import java.util.Scanner;
public class BASIC1 {
// 问题描述
// 给定一个年份,判断这一年是不是闰年。
// 当以下情况之一满足时,这一年是闰年:
// 1. 年份是4的倍数而不是100的倍数;
// 2. 年份是400的倍数。
// 其他的年份都不是闰年。
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数列 |
问题描述
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
import java.util.Scanner;
public class BASIC04 {
// 问题描述
// Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
// 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
if (n == 0){
System.out.println(0);
return;
}
int sum = 1;
int b = 1;
int t = 0;
for (int i = 3; i <= n; i++) {
t=sum;
sum = (sum + b)%10007;
b = t;
}
System.out.println(sum%10007);
}
}
BASIC-03 | 圆的面积 |
问题描述
给定圆的半径r,求圆的面积。
import java.util.Scanner;
public class BASIC03 {
// 问题描述
// 给定圆的半径r,求圆的面积。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int r = scanner.nextInt();
// Math.PI,就是Π
System.out.printf("%.7f",(r*r)*Math.PI);
}
}
BASIC-02 | 序列求和 |
问题描述
求1+2+3+...+n的值。
import java.util.Scanner;
public class BASIC02 {
// 问题描述
// 求1+2+3+...+n的值。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
long sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
System.out.println(sum);
}
}