蓝桥杯Java试题

更新时间:2024-05-22 15:26:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1. 历届试题 核桃的数量

问题描述

小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:

1. 各组的核桃数量必须相同

2. 各组内必须能平分核桃(当然是不能打碎的) 3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)

输入格式

输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30)

输出格式

输出一个正整数,表示每袋核桃的数量。

样例输入1

2 4 5

样例输出1

20

样例输入2

3 1 1

样例输出2

3

JAVA

源代码

? import java.util.Scanner; ? public class Main { ?

? public static void main(String[] args){

? Scanner sc=new Scanner(System.in); ? int a=sc.nextInt(); ? int b=sc.nextInt(); ? int c=sc.nextInt(); ? int i;

?? for(i=1;;i++){

?? if(i%a==0&&i%b==0&&i%c==0) ?? ?? break; ?? }

?? System.out.println(i); ?? }}

2. 基础练习 Sine

之舞

时间限制:1.0s 内存限制:512.0MB

问题描述

最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学

好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设

An=sin(1–sin(2+sin(3–sin(4+...sin(n))...) Sn=(...(A1+n)A2+n-1)A3+...+2)An+1

FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。

输入格式

仅有一个数:N<201。

输出格式

请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。

样例输入

3

样例输出

((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin(3)))+1

语言 JAVA

源代码

?? ?? ?? ?? ?? ?? ?? ?? ?? import java.util.Scanner; public class Main { private static int m;

public static void main(String[] args){ Scanner sc=new Scanner(System.in); m=sc.nextInt();

for(int i=0;i

?? Sn(1); ?? }

?? public static void An(int n,int k){ ?? if(n==k){

?? System.out.print(\?? }else if(n%2!=0){ ??

System.out.print(\?? }else{ ??

System.out.print(\

?? ; } ?? if(n

?? System.out.print(\?? }

?? public static void Sn(int n){ ?? An(1,n); ?? if(n!=m){

?? System.out.print(\?? }else{

?? System.out.print(\?? } ?? if(n

?? Sn(n+1); } }}

编译信息 无

3. 基础练习 FJ的字符串

时间限制:1.0s 内存限制:512.0MB

问题描述

FJ在沙盘上写了这样一些字符串: A1 = “A” A2 = “ABA”

A3 = “ABACABA” A4 = “ABACABADABACABA” ? ?

你能找出其中的规律并写所有的数列AN吗?

输入格式

仅有一个数:N ≤ 26。

输出格式

请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。

样例输入

3

样例输出

ABACABA

言 JAVA

源代码

?? import java.util.Scanner; ?? public class Main {

?? public static char[] c =

{'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'}; ?? public static void main(String[] args){ ?? Scanner scan = new Scanner(System.in); ?? int n=scan.nextInt(); ?? print(n); }

?? private static void print(int n){ ?? if(n == 1){

?? System.out.print(\?? } ?? else{

输出格式

输出时间时刻的英文。

样例输入

0 15

样例输出

zero fifteen

?? import java.util.Scanner; ?? public class Main {

?? public static String[]

time1={\\\

?? public static String[] time2={\?? public static void main(String[] args){ ?? Scanner sc=new Scanner(System.in); ?? while(sc.hasNext()){ ?? int h=sc.nextInt(); ?? int m=sc.nextInt(); ?? if(h<=20){

?? System.out.print(time1[h]); ?? }else{

?? System.out.print(\?? } if(m==0){ ??? System.out.println(\??? }else{ if(m<20){ ??? System.out.print(\??? }else{ ??? int a=m/10;//十位

??? int b=m;//个位 ??? if(b==0)

??? System.out.print(\??? else

??? System.out.print(\\

??? } ??? }

??? System.out.println(); ??? } ??? } ??? ??? ??? }

7. 基础练习 Huffuman

时间限制:1.0s 内存限制:512.0MB

问题描述

Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。

给出一列数{pi}={p0, p1, ?, pn-1},用这列数构造Huffman树的过程如下:

1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa + pb。

2. 重复步骤1,直到{pi}中只剩下一个数。

在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。

本题任务:对于给定的一个数列,现在请你求出用该数列构造Huffman树的总费用。

例如,对于数列{pi}={5, 3, 8, 2, 9},Huffman树的构造过程如下:

1. 找到{5, 3, 8, 2, 9}中最小的两个数,分别是2和3,从{pi}中删除它们并将和5加入,得到{5, 8, 9, 5},费用为5。 2. 找到{5, 8, 9, 5}中最小的两个数,分别是5和5,从{pi}中删除它们并将和10加入,得到{8, 9, 10},费用为10。 3. 找到{8, 9, 10}中最小的两个数,分别是8和9,从{pi}中删除它们并将和17加入,得到{10, 17},费用为17。 4. 找到{10, 17}中最小的两个数,分别是10和17,从{pi}中删除它们并将和27加入,得到{27},费用为27。

5. 现在,数列中只剩下一个数27,构造过程结束,总费用为5+10+17+27=59。

输入格式

输入的第一行包含一个正整数n(n<=100)。

接下来是n个正整数,表示p0, p1, ?, pn-1,每个数不超过1000。

输出格式

输出用这些数构造Huffman树的总费用。

样例输入

5

5 3 8 2 9

样例输出

59

语言 JAVA

??? import java.util.*; ??? public class Main{

??? public static void main(String args[]){

??? Scanner sc=new Scanner(System.in);

??? while(sc.hasNext()){ ??? int n=sc.nextInt(); ??? int[] a=new int[n]; ??? for(int i=0;i

??? int k=0; ??? int sum=0;

源代码

??? while(n>1){

??? Arrays.sort(a); ??? k=a[0]+a[1]; ??? sum=sum+k; ??? a[0]=k;

??? a[1]=Integer.MAX_VALUE; ??? n--; ??? ??? }

??? System.out.print(sum); ??? } ??? } }

8. 基础练习 高精度加法

时间限制:1.0s 内存限制:512.0MB

问题描述

输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。

算法描述

由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。 计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍

可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。 最后将C输出即可。

输入格式

输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。

输出格式

输出一行,表示a + b的值。

样例输入

20100122201001221234567890 2010012220100122

样例输出

20100122203011233454668012

语言 JAVA

源代码

??? import java.util.*; ??? import java.math.*; ??? public class Main{

??? public static void main(String args[]){ ??? Scanner sc=new Scanner(System.in); ??? while(sc.hasNext()){ ??? String s1=sc.next(); ??? String s2=sc.next(); ??? BigInteger n1=new BigInteger(s1);

??? BigInteger n2=new BigInteger(s2); ???

System.out.println(n1.add(n2));

样例输入

30

样例输出

1E

语言 JAVA

??? import java.util.*; ??? public class Main {

??? public static void main(String args[]){ ??? Scanner sc=new Scanner(System.in); ??? int n=sc.nextInt();

??? System.out.println(Trans(n)); ??? }

??? public static String Trans(int n){ ??? String s=\??? StringBuffer str=new StringBuffer();

??? for(int i=0;n>=16;i++){ ??? int a=n; ??? n/=16;

??? str.append(s.charAt(a)); ??? ??? }

??? str.append(s.charAt(n));

??? return str.reverse().toString(); ??? } ??? }

试题名称 语言

JAVA

基础练习 十进制转十六进制

源代码

源代码

??? import java.util.Scanner; ??? public class Main {

??? public static void main(String[] args) {

??? Scanner sc=new Scanner(System.in);

??? int c=sc.nextInt(); ???

System.out.println(Integer.toHexString(c).toUpperCase()); }}

13. 基础练习 特殊回文数

时间限制:1.0s 内存限制:512.0MB

问题描述

123321是一个非常特殊的数,它从左边读和从右边读是一样的。

输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式

输入一行,包含一个正整数n。

输出格式

按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入

52

样例输出

899998 989989 998899

数据规模和约定

1<=n<=54。

语言

JAVA

??? import java.util.*; ??? public class Main{ ???

??? public static void wuwei(int n){ ??? for(int i=1;i<=9;i++){ ??? for(int j=0;j<=9;j++){ ??? for(int k=0;k<=9;k++){ ??? if((2*i+k+2*j)==n) ???

System.out.println(i*10000+j*1000+k*100+j*10+i); ??? ??? } ??? } ??? } ??? }

??? public static void liuwei(int n){ ??? for(int i=1;i<=9;i++){ ??? for(int j=0;j<=9;j++){ ??? for(int k=0;k<=9;k++){ ???

??? if(2*(i+k+j)==n) ???

System.out.println(i*100000+j*10000+k*1000+k*100+j*10+i); ??? } ??? } ??? }

源代码

??? }

??? public static void main(String args[]){ ??? Scanner sc=new Scanner(System.in); ??? int n=sc.nextInt(); ??? wuwei(n); ??? liuwei(n); ??? ??? ??? ??? } ??? ??? ??? }

14. 基础练习 回文数

时间限制:1.0s 内存限制:512.0MB

问题描述

1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输出格式

按从小到大的顺序输出满足条件的四位十进制数。

语言 JAVA

??? import java.util.*; ??? public class Main{

??? public static void main(String args[]){

??? for(int i=1000;i<10000;i++){

源代码

??? int a=i/1000;

??? int b=(i-a*1000)/100;

??? int c=(i-a*1000-b*100)/10; ??? int d=(i-a*1000-b*100); ??? if((a==d)&&(b==c))

??? System.out.println(i); ??? } ??? ??? } ??? ??? ??? }

15.

基础练习 特殊的数字

时间限制:1.0s 内存限制:512.0MB

问题描述

153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。

输出格式

按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

试题名称 基础练习 特殊的数字 语言 JAVA 源代码 ??? import java.util.*;

??? public class Main{

??? public static void main(String args[]){

??? for(int i=100;i<1000;i++){ ??? int a=i/100;

??? int b=(i-a*100)/10;

??? int c=(i-a*100-b*10); ??? if(i==(a*a*a+b*b*b+c*c*c)) ??? System.out.println(i); ??? } ??? ??? } ??? ??? ??? }

16. 基础练习 杨辉三角形

时间限制:1.0s 内存限制:256.0MB

问题描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)的展开式的系数。

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

下面给出了杨辉三角形的前4行:

i

1 1 1 1 2 1 1 3 3 1

给出n,输出它的前n行。

输入格式

输入包含一个数n。

输出格式

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

样例输入

4

样例输出

1 1 1 1 2 1

1 3 3 1

数据规模与约定

1 <= n <= 34。

试题名称 基础练习 杨辉三角形

语言 JAVA

??? 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

??? for(int j=2;j

a[j][k]=a[j-1][k]+a[j-1][k-1]; ??? } ??? }

??? for(int i=0;i0)

??? System.out.print(a[i][j]+\\

??? }

??? System.out.println(); ??? } ??? } }

源代码

17. 基础练习 查找整数

时间限制:1.0s 内存限制:256.0MB

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

输出格式

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入

6

1 9 4 8 3 9 9

样例输出

2

数据规模与约定

1 <= n <= 1000。

试题名称 基础练习 查找整数

语言 JAVA

源代码

??? 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]; ???

??? for(int i=0;i

??? int s=sc.nextInt(); ???

??? for(int i=0;i

??? if(f==0){

??? System.out.println(-1); ??? } ??? ??? ??? } }

18

基础练习 数列特征

时间限制:1.0s 内存限制:256.0MB

问题描述

给出n个数,找出这n个数的最大值,最小值,和。

输入格式

第一行为整数n,表示数的个数。

第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

输出格式

输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。

样例输入

5

1 3 -2 4 5

样例输出

5 -2 11

数据规模与约定

1 <= n <= 10000。

试题名称 基础练习 数列特征 语言 JAVA

源代码

??? 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]; ??? int sum=0;

??? for(int i=0;i

??? Arrays.sort(a);

??? System.out.println(a[n-1]); ??? System.out.println(a[0]); ??? System.out.println(sum); ??? }}

19. 基础练习 字母图形

时间限制:1.0s 内存限制:256.0MB

问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式

输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。

输出格式

输出n行,每个m个字符,为你的图形。

样例输入

5 7

样例输出

ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC

数据规模与约定

1 <= n, m <= 26。

题名称 语言 源

JAVA

基础练习 字母图形

??? import java.util.*; ??? public class Main{

代码

??? public static void main(String[] args) { ??? Scanner scanner = new Scanner(System.in); ??? while(scanner.hasNext()) ??? {

??? char[] c = {'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'}; ??? int a = scanner.nextInt(); ??? int b = scanner.nextInt(); ??? int j = 0;

??? for(int i = 0; i < a; i++) ??? {

??? int l = j;

??? for(int k = 0; k < b; k++) ??? {

??? System.out.print(c[Math.abs(l++)]); ??? } ??? j--;

??? System.out.println(); ??? } ??? } }}

20. 基础练习 01字串

时间限制:1.0s 内存限制:256.0MB

问题描述

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000 00001 00010 00011

00100

请按从小到大的顺序输出这32种01串。

输入格式

本试题没有输入。

输出格式

输出32行,按从小到大的顺序每行一个长度为5的01串。

样例输出

00000 00001 00010 00011

<以下部分省略>

试题名

基础练习 01字串

语言 JAVA

源代码

??? import java.util.*; ??? public class Main {

??? public static void main(String args[]){ ???

??? for(int i=0;i<32;i++){ ???

System.out.println(i/16%2+\??? } ??? ??? ??? } }

21. 基础练习 闰年判断

时间限制:1.0s 内存限制:256.0MB

问题描述

给定一个年份,判断这一年是不是闰年。 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍数; 2. 年份是400的倍数。 其他的年份都不是闰年。

输入格式

输入包含一个整数y,表示当前的年份。

输出格式

输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。

样例输入

2013

样例输出

no

样例输入

2016

样例输出

yes

数据规模与约定

1990 <= y <= 2050。

试题名称 基础练习 闰年判断

语言 JAVA

源代码

??? import java.util.*; ??? public class Main {

??? public static void main(String args[]){ ???

??? Scanner sc=new Scanner(System.in);

??? int a=sc.nextInt();

??? if(a@0==0||(a%4==0&&a0!=0)) ??? System.out.println(\??? else

??? System.out.println(\??? ??? ??? } }

22. 入门训练 Fibonacci数列

时间限制:1.0s 内存限制:256.0MB

问题描述

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

输入格式

输入包含一个整数n。

输出格式

输出一行,包含一个整数,表示Fn除以10007的余数。

说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。

样例输入

10

样例输出

55

样例输入

22

样例输出

7704

数据规模与约定

1 <= n <= 1,000,000。

试题名称 入门训练 Fibonacci数列

语言 JAVA

??? import java.util.*; ??? public class Main {

??? public static void main(String args[]){

??? int[] a=new int[1000001]; ??? a[1]=1; ??? a[2]=1;

??? for(int i=3;i

??? Scanner sc=new Scanner(System.in);

??? int n=sc.nextInt();

??? System.out.println(a[n]); ??? } ??? }

源代码

23. 入门训练 圆的面积

时间限制:1.0s 内存限制:256.0MB

问题描述

给定圆的半径r,求圆的面积。

输入格式

输入包含一个整数r,表示圆的半径。

输出格式

输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。

说明:在本题中,输入是一个整数,但是输出是一个实数。

对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。

实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。

样例输入

4

样例输出

50.2654825

本文来源:https://www.bwwdw.com/article/f7v7.html

Top