大家好,这里是祁十一!准备记录一下自己的备赛情况,这是在蓝桥杯的练习系统中做的一些题目,每天会做几道题啥的,基本上就是顺一下我的思路,做一下题目啥的,希望大家能理解我说的话吧!(如果有人看到的话哈哈哈)
目录
一、入门篇
1、A+B问题
2、序列求和
3、圆的面积
4、Fibonacci数列
二、基础篇
1、闰年判断
2、01字串
3、字母图形
4、数列特征
5、查找整数
6、杨辉三角
7、特殊的数字
8、回文数
9、特殊回文数
10、十进制转十六进制
11、十六进制转十进制
12、十六进制转八进制
13、数列排序
一、入门篇 1、A+B问题 【题目】输入A、B,输出A+B。
【题目】输入A、B,输出A+B。
public class Main{ public static void main(String args[]) { Scanner sc = new Scanner(System.in); Integer a = sc.nextInt(); Integer b = sc.nextInt(); System.out.println(a + b); }}
2、序列求和 【题目】求1+2+3+...+n的值。(1 <= n <= 1,000,000,000)
【题目】求1+2+3+...+n的值。(1 <= n <= 1,000,000,000)
这个题有两种解题方法:一个是直接相加,另一个是用等差数列求和公式。
//直接相加import java.util.*;public class Main{public static void main(String[] args) {long n = new Scanner(System.in).nextInt();long sum=0; for(long i=0;i<=n;i++) { sum+=i; } System.out.print(sum);}}
//用等差求和公式import java.util.*;public class Main{ public static void main(String[] args) { long result = 0; Scanner scanner=new Scanner(System.in); long n=scanner.nextLong(); if (1<=n&&n<=1000000000) { result=(n*(n+1))/2; } System.out.println(result); }}
3、圆的面积 【题目】给定圆的半径r,求圆的面积。(输出结果保留小数点后7位)
【题目】给定圆的半径r,求圆的面积。(输出结果保留小数点后7位)
注意这个小数点后七位的表示!
import java.util.*;public class Main{public static void main(String[] args) {int r = new Scanner(System.in).nextInt(); System.out.printf("%.7f",(Math.PI*r*r));}}
4、Fibonacci数列 【题目】Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
【题目】Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
当计算只包含加法、减法和乘法的整数表达式除以正整数n的余数,可以在每步计算之后对n取余,结果不变。
import java.util.*;public class Main {public static void main(String[] args) { int[] a = new int[10000001]; a[1] = 1; a[2] = 1; int n = new Scanner(System.in).nextInt(); for (int i=3; i<=n; i++){ a[i] = (a[i-1]+a[i-2])%10007; } System.out.println(a[n]); }}
二、基础篇 1、闰年判断 【题目】给定一个年份,判断这一年是不是闰年。
【题目】给定一个年份,判断这一年是不是闰年。
闰年条件:1、年份是4的倍数而不是100的倍数;2、年份是400的倍数。
import java.util.*;public class Main{public static void main(String[] args) {Scanner sc=new Scanner(System.in);int year=sc.nextInt();if(((year%4)==0 && (year%100!=0)) ||year%400==0) {System.out.println("yes");}else System.out.println("no");}}
2、01字串 【题目】对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:00000 00001 00010 00011 00100..、...请按从小到大的顺序输出这32种01串。
【题目】对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:00000 00001 00010 00011 00100..、...请按从小到大的顺序输出这32种01串。
注意5位长度的表示;学会利用Java中的函数。
import java.util.*;public class Main{public static void main(String[] args) {for(int i=0;i<32;i++){ //将整数转化为二进制字符串String result = Integer.toBinaryString(i); //将字符串转化为整数int n = Integer.parseInt(result);System.out.printf("%05dn",n);}}}
3、字母图形 【题目】利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
【题目】利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
ASCII码将数字与字母联系起来,找到行列之间的下标关系,找规律!
import java.util.*;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();for(int i = 0 ; i < n; i++) {for(int j = 0 ; j < m ;j++) {char c = (char)(Math.abs(i - j) + 'A');System.out.print(c);}System.out.println();}}}
4、数列特征 【题目】给出n个数,找出这n个数的最大值,最小值,和。(1 <= n <= 10000)
【题目】给出n个数,找出这n个数的最大值,最小值,和。(1 <= n <= 10000)
两边取极端,向中间靠近,求得最大、最小值。
import java.util.*;public class Main{public static void main(String[] args) {Scanner sc =new Scanner(System.in);int n=sc.nextInt();int[] arr=new int [n];int sum=0,t;int min=10000;int max=-10000;for(int i=0;i
5、查找整数 【题目】给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
【题目】给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
import java.util.*;public class Main{public static void main(String[] args) {Scanner sc =new Scanner(System.in);int n=sc.nextInt();int[] arr=new int [n];for(int i=0;i
6、杨辉三角 【题目】杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
【题目】杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
import java.util.*;public class Main{public static void main(String[] args) {Scanner sc =new Scanner(System.in);int n=sc.nextInt();int[][] a=new int[n][n];for(int i=0;i
7、特殊的数字 【题目】153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
【题目】153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
注意数字的每一位的表示!!!
public class Main{public static void main(String[] args) {for(int n=100;n<=999;n++) {int a=n%10;int b=(n/10)%10;int c=n/100;if(n==((a*a*a)+(b*b*b)+(c*c*c))) {System.out.println(n);}}}}
8、回文数 【题目】1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
【题目】1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
public class Main{public static void main(String[] args) {for(int i=1000;i<10000;i++) {int a=i%10;int b=((i-a)/10)%10;int c=((((i-a)/10)-b)/10)%10;int d=((((((i-a)/10)-b)/10)-c)/10)%10;if(a==d&&b==c) {System.out.println(i);}}}}
9、特殊回文数 【题目】123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
【题目】123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
import java.util.*;public class Main{public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();for(int i=10000;i<999999;i++) {if(i/100000==0) {int a=i%10; int b=((i-a)/10)%10;int c=((((i-a)/10)-b)/10)%10;int d=((((((i-a)/10)-b)/10)-c)/10)%10;int e=((((((((i-a)/10)-b)/10)-c)/10)-d)/10)%10;if(a==e&&b==d&&(a+b+c+d+e)==n) {System.out.println(i);}} else {int a=i%10; int b=((i-a)/10)%10;int c=((((i-a)/10)-b)/10)%10;int d=((((((i-a)/10)-b)/10)-c)/10)%10;int e=((((((((i-a)/10)-b)/10)-c)/10)-d)/10)%10;int f=((((((((((i-a)/10)-b)/10)-c)/10)-d)/10)-e)/10)%10;if(a==f&&b==e&&c==d&&(a+b+c+d+e+f)==n) {System.out.println(i);}}}}}
10、十进制转十六进制 【题目】给出一个非负整数,将它表示成十六进制的形式。
【题目】给出一个非负整数,将它表示成十六进制的形式。
static String valueOf(char c) 返回 char参数的字符串 char形式。
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);long a = sc.nextLong();StringBuilder str = new StringBuilder();int x;if(a==0){System.out.println(0);return ;}while(a>0){x = (int) (a % 16);switch(x){case 10: str.append("A");break;case 11: str.append("B");break;case 12: str.append("C");break;case 13: str.append("D");break;case 14: str.append("E");break;case 15: str.append("F");break;default: str.append(String.valueOf(x));break;}a = a/16;}StringBuilder ans = new StringBuilder();for(int i=str.length()-1;i>=0;i--){ans.append(str.charAt(i)); }System.out.println(ans);}}
11、十六进制转十进制 【题目】输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
【题目】输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
按权展开,注意位数的变化。ans = ans+x*((long)Math.pow(16, dig));
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.next();long ans=0;int dig = str.length()-1;for(int i=0;i
12、十六进制转八进制 【题目】给定n个十六进制正整数,输出它们对应的八进制数。
【题目】给定n个十六进制正整数,输出它们对应的八进制数。
当二进制数位置不够时,进行补位;
StringBuilder可用来申明可变字符串; charAt(i)可以用来遍历字符串中的每个字符。
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 cnt=0;cnt
13、数列排序 【题目】给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
【题目】给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
冒泡排序要记牢!!!
import java.util.*;public class Main {public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n; int[] arr = new int[205]; n = scanner.nextInt(); for(int i = 0 ; i < n ; i++) arr[i] = scanner.nextInt(); sort(arr,n); for(int i = 0 ; i < n ; i++) System.out.print(arr[i] + " ");}private static void sort(int[] arr,int n) { for(int i = 0; i < n - 1 ;i++) { for(int j = 0 ; j < n - 1 - i ; j++) if(arr[j] > arr[j + 1]) { int t = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = t; } }}}
总而言之,言而总之,这个基础练习果然比较基础,继续要加油啊!!!!