大家好,这里是祁十一!准备记录一下自己的备赛情况,这是在蓝桥杯的练习系统中做的一些题目,每天会做几道题啥的,基本上就是顺一下我的思路,做一下题目啥的,希望大家能理解我说的话吧!(如果有人看到的话哈哈哈)
目录
一、入门篇
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。
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)
【题目】输入A、B,输出A+B。
【题目】求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;imax)
max=t;
else max=max;
if(t
5、查找整数
【题目】给出一个包含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行。
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。编程求所有满足这种条件的三位十进制数。
注意数字的每一位的表示!!!
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是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
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 。
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位的正的十六进制数字符串,将它转换为正的十进制数后输出。
按权展开,注意位数的变化。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个十六进制正整数,输出它们对应的八进制数。
当二进制数位置不够时,进行补位;
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;cnt0)
System.out.print(ans);
boolean flog = true;
for(int i=s;i
13、数列排序
【题目】给定一个长度为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;
}
}
}
}
总而言之,言而总之,这个基础练习果然比较基础,继续要加油啊!!!!



