蓝桥杯2013高职java预赛题
蓝桥杯java试题

蓝桥杯java试题蓝桥杯是中国最具影响力的IT技术竞赛之一,旨在选拔和培养优秀的计算机程序设计人才。
其中,Java试题作为蓝桥杯竞赛的重要组成部分,对Java编程能力的考察有着重要意义。
Java试题的内容十分广泛,涉及到Java语法、面向对象编程、数据结构、算法等多个方面。
参赛选手需要具备扎实的Java基础和编程能力,同时还需要具备快速解决问题和优化代码的能力。
在蓝桥杯Java试题中,常见的一个题型是要求选手根据题目给出的要求和输入数据,通过编写Java程序来输出符合要求的结果。
这种题型能够综合考察选手对编程语言知识的掌握程度以及解决实际问题的能力。
另外,Java试题还会考察选手对于Java API的熟悉程度。
Java作为一门广泛应用的编程语言,提供了丰富的API库,包括字符串处理、集合框架、IO操作等方面。
选手需要熟练掌握这些API的使用方法,以便在编写程序时能够更高效地实现所需功能。
除了基础知识和编程技巧,蓝桥杯Java试题还会设置一些较难的算法题目。
这些题目要求选手具备较强的逻辑思维和问题解决能力,能够运用适当的数据结构和算法解决复杂的问题。
在备战蓝桥杯Java试题时,选手需要充分掌握Java语言的基础知识,包括语法规则、面向对象编程、异常处理等方面。
同时,加强对Java API的熟悉程度,并积累一些常用算法和数据结构的解题思路。
此外,多做一些Java编程练习和模拟题目,提高自己的编程水平和解题能力。
总之,蓝桥杯Java试题的出现是为了选拔和培养优秀的计算机程序设计人才。
通过参加这些试题的练习和考核,选手可以提高自己的编程能力和解决问题的能力,为未来的IT技术发展奠定坚实的基础。
对于想要在编程领域有所建树的人来说,积极备战蓝桥杯Java试题是一个非常重要的选择。
第三届蓝桥杯全国软件大赛java高职组预赛题答案(全)

第三届蓝桥杯全国软件大赛java高职组预赛题答案(全)第三届全国软件大赛java高职预赛题答案(全)仅供参考!1.public class A1 {public static void main(String[] args){//答案为:3789.86double AB = 52.1,BC = 57.2,CD = 43.5,DE = 51.9,EA = 33.4,EB = 68.2,EC = 71.9;System.out.println(mianji(AB, EB, EA) + mianji(EB, BC, EC) + mianji(EC, CD, DE));}static double mianji(double a,double b,double c){double s = (a + b + c)/2;return Math.sqrt(s * (s - a)*(s -b)*(s - c));}}2.public class A2 {//答案:19550604 有点不确定供参考觉得算法没什么问题public static void main(String[] args) {int a[] = gbs();int i = 0;while(i <= a.length){if(String.valueOf(a[i]).contains("06")&&String.valueOf(a[i]).c ontains("19" ))System.out.println(a[i]);i++;}}static int[] gbs(){int d[] = new int[5030];int j = 0;for(int i = 10000;i * 2012 >= 10000000; i--){d[j] = i * 2012;j++;}return d;}}3.import java.math.BigInteger;public class A3 {//答案:36893488147419103231public static void main(String[] args) {// TODO Auto-generated method stubBigInteger sum = new BigInteger("1");BigInteger n = new BigInteger("2");BigInteger num = new BigInteger("1");for(int i = 1;i <= 64; i++){num = num.multiply(n);System.out.println(num);sum = sum.add(num);}System.out.println(" "+ sum.toString());}}4.public class A4 {// 答案: 20,5,4,2,0//18,9,3,2,0//12,6,4,2,0public static void main(String[] args) {// TODO Auto-generated method stubfor(int d = 20; d > 0; d--){for(int c = 20; c > 3; c--){for(int b = 20; b > 2; b--){for(int a = 20; a > 1; a--){double s;s = 1.0/d + 1.0/a + 1.0/b + 1.0/c;if(s == 1.0&&(a<b&&b<c&&c<d))< p="">{System.out.println(d + "," + c +"," + b+","+a+","+ "0"); }}}}}5.public class B1 {public static void main(String[] args){System.out.println(getFirstNum("hhdh212"));}public static int getFirstNum(String s){if(s==null || s.length()==0) return -1;char c = s.charAt(0);if(c>='0' && c<='9') returnInteger.parseInt(String.valueOf(c).toString()); //填空return getFirstNum(s.substring(2)); //填空}}6. import java.util.*;public class B2 {public static void main(String[] args){List a = new Vector();a.addAll(Arrays.asList("A","2","3","4","5","6","7","8","9","10"," J","Q","K "));System.out.println(moveCard(a));}public static List moveCard(List src)if(src==null) return null;List dst = new Vector();for(;;){if(src.size() == 0) break; // 填空src.add(src.remove(0));dst.add(src.remove(0)); // 填空}return dst;}}7. import java.util.*;public class B3{public static void main(String[] args){System.out.println( isGoodBracket("...(..[.)..].{.(..).}...")); System.out.println( isGoodBracket("...(..[...].(.).){.(..).}...")); System.out.println( isGoodBracket(".....[...].(.).){.(..).}...")); System.out.println( isGoodBracket("...(..[...].(.).){.(..)....")); }public static boolean isGoodBracket(String s){Stack a = new Stack();for(int i=0; i<="" p="">{char c = s.charAt(i);if(c=='(') a.push(')');if(c=='[') a.push(']');if(c=='{') a.push('}');if(c==')' || c==']' || c=='}'){if(a.size()==0) return false; // 填空if(a.pop() != c) return false;}}if(s.replace(".", "").length()%2 !=0) return false; // 填空return true;}}8.import java.util.Scanner;public class C1 {public static void main(String[] args) {// TODO Auto-generated method stubScanner scanner = new Scanner(System.in);int num = scanner.nextInt();int j = num;String[] strings = new String[num];for(int i = 0;i < num;i++){Scanner scanner1 = new Scanner(System.in); strings[i] = scanner1.nextLine();}while( num >0){System.out.println(score(strings[j - num]));num--;}}static int score(String s){int score = 0;int num[] = new int[4];char c[] = s.toCharArray();for(int i = 0;i < 4;i++){if(c[i] == '6'||c[i] == '9'||c[i] == '8')score = score + 1;num[i] = Integer.parseInt(String.valueOf(c[i]));}if((c[0] == c[1]&&c[0] == c[2])&&(c[1] == c[2]&&c[2] == c[3]))score = score + 6;else {if((c[0] == c[1]&&c[0] == c[2])||(c[1] == c[2]&&c[2] == c[3])) score = score + 3;}if((c[0] == c[1]&&c[2] == c[3])&&(c[0] == c[2]&&c[1] == c[3]))score = score + 2;else {if((c[0] == c[1]&&c[2] == c[3])||(c[0] == c[2]&&c[1] == c[3])) score = score + 1;}boolean a = (num[0]== num[1]-1 && num[1] == num[2] - 1 && num[2] == num[3] -1);boolean b = ( num[0]== num[1]+1 && num[1] == num[2] + 1 && num[2] == num[3] +1);if(a || b){score = score +5;}return score;}}9.import java.util.Scanner;public class C2 {public static void main(String[] args) {// TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); int num = scanner.nextInt();int j = num;String[] strings = new String[num];for(int i = 0;i < num;i++){Scanner scanner1 = new Scanner(System.in); strings[i] = scanner1.nextLine();}while( num >0){System.out.println(mima(strings[j - num])); num--;}}static String mima(String s){char[] c = s.toCharArray();//int count = c.length/6;int sum[] = {0,0,0,0,0,0};int length = 0;if(c.length%6 == 0)length = c.length/6;else {length = c.length/6 +1;}int i = 0;int j = 0;//System.out.println(length);while (i < 6){if(i >= c.length%6&&j*6+i>=c.length)sum[i] = sum[i] + 0;else{sum[i] = sum[i] + c[j*6 + i];}j++;if(j == length){i++;j= 0;}}//System.out.println(sum[0]+" "+sum[1] + " " + sum[2]+ " " + sum[3]+ " " + sum[4]+ " " + sum[5]);int[] mima = new int[6];String mimastring = "";i = 0;for(int num:sum){mima[i] = getnum(num);mimastring = mimastring.concat(String.valueOf(mima[i])); i++;}return mimastring;}static int getnum(int sum){int num = 0;char[] c = String.valueOf(sum).toCharArray();int i =0;while( i < c.length){num += Integer.parseInt(String.valueOf(c[i]));if (num >= 10){num = getnum(num);}i++;}return num;}}10.public class C3 {public static void main(String[] args) {// TODO Auto-generated method stub//String string = "123+4+5+67-89";char a[] = {' ','+','-'};char num[] = {'1','2','3','4','5','6','7','8','9'}; for(char x1:a)for(char x2:a)for(char x3:a)for(char x4:a)for(char x5:a)for(char x6:a)for(char x7:a)for(char x8:a){int result = 0;char s[] ={x1,x2,x3,x4,x5,x6,x7,x8};String string = "";for(int i = 0;i<=7;i++){string =string+num[i]+s[i];}string =string+num[8];string=string.replaceAll(" ","");String jianString[] = string.split("-");int addResult[] = new int[jianString.length]; addResult[0] = 0;StringaddString[] = jianString[0].split("[+]");for(int j =0;j<addstring.length;j++)< p="">{ addResult[0] += Integer.parseInt(String.valueOf(addString[j]));}result = addResult[0];for(int i =1;i<jianstring.length;i++)< p="">{String num1[] = jianString[i].split("[+]");result = result - Integer.parseInt(String.valueOf(num1[0]));for(intp = 1;p<num1.length;p++)< p="">result += Integer.parseInt(String.valueOf(num1[p]));}if(result == 110) System.out.println(string);}}}</num1.length;p++)<></jianstring.length;i++)<></addstring.length;j++)<></b&&b<c&&c<d))<>。
蓝桥杯java历年真题及答案整理(共129道题目及答案)

蓝桥杯java历年真题及答案整理(参考网络资料整理出来)1.字符排序算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
package Question1_9;import java.util.Scanner;import java.util.Vector;public class Question1 {public static long count=0;private void fullPermutation(Vector<Character>sourse, Vector<Character> result) {if(sourse.size()==0){for (int i = 0; i < result.size(); i++) {System.out.print(result.elementAt(i));}System.out.print("\n");count++;return;}for (int i = 0; i < sourse.size(); i++) {Vector<Character>tsourse=new Vector<Character>(sourse);Vector<Character>tresult=new Vector<Character>(result);tresult.add(sourse.elementAt(i));tsourse.remove(i);new Question1().fullPermutation(tsourse, tresult);}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();Vector<Character> sourse=new Vector<Character>();Vector<Character> result=new Vector<Character>();for (int i = 0; i < n; i++) {sourse.add((char)('A'+i));}new Question1().fullPermutation(sourse, result);System.out.println(Question1.count);}}方法二:import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.List;import java.util.Scanner;import java.util.Set;public class Demo03 {// 去掉重复元素,放入lispublic static void removeDuplicate(String s,Set<Character> lis){for(char x:s.toCharArray()){lis.add(x);}}// 为方便操作将sets 转lispublic static void convert(List<Character> lis,Set<Character> sets){Iterator<Character> iter = sets.iterator();while(iter.hasNext()){lis.add(iter.next());}}// 检测符合条件的元素组合public static void check(Set<Character> sets){List<Character> lis = new ArrayList<Character>();convert(lis,sets); // 为方便操作将sets 转lisStringBuffer sb = new StringBuffer();for(int i=0;i<lis.size()-2;i++){for(int j=i+1;j+1<lis.size();j++){ // 向后添加两位,所以j+1<lis.size() for(int k=j+1;k<lis.size();k++){sb.append(lis.get(i));sb.append(lis.get(j));sb.append(lis.get(k));System.out.println(sb); // 输出组合sb.setLength(0); // 清空}}}}public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("输入串(不大于30个字符)。
2010-2013蓝桥杯预赛真题及详细答案

第三届蓝桥桥杯预赛真题及详细答案一、微生物增殖假设有两种微生物X和Y, X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90呢?本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
把答案写在“解答.txt”中,不要写在这里!答案:0 和94371840(此题比较简单就不写程序了,以下均有程序)二、古堡算式福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把ABCDE 所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!参考答案:21978参考程序:#include<stdio.h>void main(){int k,t1 ,t;for(k=10234;k<50000;k++){bool flag[10]={0};t=k;t1=0;while(t){if(flag[t%10])break ;flag[t%10] = true ;t1 = t1*10 + t%10 ;t /= 10 ;}if( t==0 && t1%k==0){printf("%d * %d = %d\n",k,t1/k,t1);}}}三、比酒量有一群海盗(不多于20人),在船上比拼酒量。
过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。
再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。
当第4瓶酒平分喝下后,大家都倒下了。
2013年蓝桥杯模拟赛答案

2013年蓝桥杯模拟赛答案⼀、标题: 1的个数从1到20的所有数字中含有多少个“1”仔细数⼀下,应该是12个。
那么从1到1000的整数中,含有多少个“1”呢?请填写该数字。
#include <iostream>using namespace std;#define MAX 1000int main(){int count = 0;int m;for(int i = 1; i <= MAX; i++){int j = i;while(j){m = j % 10;if(m == 1){count++;}j = j / 10;}}cout << count << endl;}题⽬标题: 1的个数参考答案:301得分:10⼆、标题:硬币⽅案有50枚硬币,可能包括4种类型:1元,5⾓,1⾓,5分。
已知总价值为20元。
求各种硬币的数量。
⽐如:2,34,6,8 就是⼀种答案。
⽽ 2,33,15,0 是另⼀个可能的答案,显然答案不唯⼀。
你的任务是确定类似这样的不同的⽅案⼀共有多少个(包括已经给出的2个)?直接提交该数字,不要提交多余的内容。
#include <iostream>using namespace std;#define MAX 20int main(){int count = 0;for(int i = 0; i <= 20; i++){for(int j = 0; j <= 40; j++){for(int k = 0; k <= 200; k++){for(int m = 0; m <= 400; m++){if(i + j + m + k == 50 && i * 100 + j * 50 + k *10 + m * 5 == 2000){count++;}}}}}cout << count << endl;}题⽬标题:硬币⽅案参考答案:50三、标题:四⽅定理数论中有著名的四⽅定理:所有⾃然数⾄多只要⽤四个数的平⽅和就可以表⽰。
蓝桥杯2013决赛JAVA本科B组试题

试题一:公式求值问题描述输入n, m, k,输出下面公式的值。
其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数。
组合数的计算公式如下。
输入格式输入的第一行包含一个整数n;第二行包含一个整数m,第三行包含一个整数k。
输出格式计算上面公式的值,由于答案非常大,请输出这个值除以999101的余数。
样例输入313样例输出162样例输入201010样例输出359316数据规模和约定对于10%的数据,n≤10,k≤3;对于20%的数据,n≤20,k≤3;对于30%的数据,n≤1000,k≤5;对于40%的数据,n≤10^7,k≤10;对于60%的数据,n≤10^15,k ≤100;对于70%的数据,n≤10^100,k≤200;对于80%的数据,n≤10^500,k ≤500;对于100%的数据,n在十进制下不超过1000位,即1≤n<10^1000,1≤k≤1000,同时0≤m≤n,k≤n。
提示999101是一个质数;当n位数比较多时,绝大多数情况下答案都是0,但评测的时候会选取一些答案不是0的数据;通过推导,可以将原式变为一个只含2^(n-i)的项和C(n,m)项的公式,然后分别求这两类公式的值,均有快速方法。
最终将这些项组合起来得到答案。
1.import java.math.BigInteger;2.import java.util.Scanner;3.public class Main4.{5.public static BigInteger lucas(BigInteger n,BigInteger m,BigInteger p){6.if(m.equals(BigInteger.ZERO)) return BigInteger.ONE;7.return BigInteger.valueOf(f(n.mod(p).longValue(),m.mod(p).longValue())).multiply(lucas(n.divide(p),m.divide(p),p)).mod(p);8.}9.10.11.public static long f(long n,long m){12.if(m>n) return 1;13.if(n==m|| m==0) return 1;14.if(m>n-m) m=n-m;15.long tmpi=1,tmpn=1,s1=1,s2=1,ans=1;16.for (int i = 1; i<=m; i++) {17.tmpi=i;18.tmpn=n-i+1;19.s1=s1*tmpi%999101;20.s2=s2*tmpn%999101;21.}22.ans = s2*pow1(s1,999099)%999101;23.return ans%999101;25.public static long pow1(long x,long n) {26.if(x==1) return 1;27.if (n==0)28.return 1;29.else {30.while ((n & 1)==0) {31.n>>=1;32.x=(x *x)%999101;33.}34.}35.long result = x%999101;36.n>>=1;37.while (n!=0) {38.x=(x *x)%999101;;39.if ((n & 1)!=0)40.result =result*x%999101;41.n>>=1;42.}43.return result;44.}45.public static void main(String[] args) {46.Scanner sc = new Scanner(System.in);47.BigInteger n = new BigInteger(sc.nextLine());48.BigInteger m = new BigInteger(sc.nextLine());49.int k = Integer.parseInt(sc.nextLine());50.long start = System.currentTimeMillis();51.BigInteger md = new BigInteger("999101");52.long Cnm=lucas(n, m,md).longValue()%999101;53.long sum = 0;54.if(Cnm!=0){55.int[][] a = new int[k][k];56.int h = 1;57.for (int i = 0; i < k; i++) {58.for (int j = 0; j < k; j++) {59.if (j >= h)60.a[i][j] =0;61.else {62.if (j == 0 || j == h - 1)63.a[i][j] = 1;64.else {65.a[i][j] = (a[i - 1][j - 1]*(h - j)+a[i - 1][j])%999101;66.}67.}69.h++;70.}71.long m1 = 1,n1 =1;72.long x=n.subtract(new BigInteger(k+"")).mod(md.subtract(BigInteger.ONE)).longValue();73.long n3 = pow1(2,x);74.for (int i = k - 1; i >= 0; i--) {75.n1=n3*pow1(2,i)%999101;76.m1 = m1*(n.subtract(new BigInteger((k - 1 - i) + "")).mod(md).longValue())%999101;77.sum = (sum+m1*a[k - 1][i]*n1)%999101;78.}79.sum = sum*Cnm%999101;80.}81.System.out.println(sum);82.long end = System.currentTimeMillis();83.}84.85.86.}试题二:九宫重排如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。
第三届蓝桥杯(高职java预赛题及参考答案)

1、造成高房价的原因有许多,比如土地出让价格。
既然地价高,土地的面积必须仔细计算。
遗憾的是,有些地块的形状不规则,比如是如图【1.jpg】中所示的五边形。
一般需要把它划分为多个三角形来计算。
已知三边求三角形的面积需要用海伦定理,参见【2.jpg】各条边长数据如下:AB = 52.1BC = 57.2CD = 43.5DE = 51.9EA = 33.4EB = 68.2EC = 71.9根据这些数据求五边形地块的面积。
四舍五入到小数后两位。
只写结果,不要源代码!1.jpg2.jpgpublic class Onea {public static void main(String args[]){double s_ABE = (52.1 + 68.2 + 33.4) / 2;double s_BEC = (68.2 + 57.2 + 71.9) / 2;double s_EDC = (71.9 + 51.9 + 43.5) / 2;// sqrt()是Math中的静态方法可以用类名直接调用double A_ABE = Math.sqrt(s_ABE * (s_ABE - 52.1) * (s_ABE - 33.4) * (s_ABE - 68.2));double A_BEC = Math.sqrt(s_BEC * (s_BEC - 68.2) * (s_BEC - 57.2) * (s_BEC - 71.9));double A_EDC = Math.sqrt(s_EDC * (s_EDC - 71.9) * (s_EDC - 43.5) * (s_EDC - 51.9));System.out.println(A_ABE + A_BEC + A_EDC);}}// 输出的结果是3789.8640994485186public class One {public static void main(String[] args) {double AB = 52.1, BC = 57.2, CD = 43.5, DE = 51.9, EA = 33.4, EB = 68.2, EC = 71.9;System.out.println(mainji(AB,EB,EA) + mainji(EB,BC,EC) +mainji(EC,CD,DE));}static double mainji(double a,double b,double c){double s = (a + b + c)/2;return Math.sqrt(s * (s - a) * (s - b) * (s - c));}}输出结果:3789.86409944851862、今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。
蓝桥杯2013高职高专JAVA决赛试题

一、标题:好好学习汤姆跟爷爷来中国旅游。
一天,他帮助中国的小朋友贴标语。
他负责贴的标语是分别写在四块红纸上的四个大字:“好、好、学、习”。
但是汤姆不认识汉字,他就想胡乱地贴成一行。
请你替小汤姆算一下,他这样乱贴,恰好贴对的概率是多少?答案是一个分数,请表示为两个整数比值的形式。
例如:1/3 或2/15 等。
如果能够约分,请输出约分后的结果。
注意:不要书写多余的空格。
请严格按照格式,通过浏览器提交答案。
注意:只提交这个比值,不要写其它附加内容,比如:说明性的文字。
二、标题:埃及分数古埃及曾经创造出灿烂的人类文明,他们的分数表示却很令人不解。
古埃及喜欢把一个分数分解为类似:1/a + 1/b 的格式。
这里,a 和b 必须是不同的两个整数,分子必须为1比如,2/15 一共有4 种不同的分解法(姑且称为埃及分解法):1/8 + 1/1201/9 + 1/451/10 + 1/301/12 + 1/20那么,2/45 一共有多少个不同的埃及分解呢(满足加法交换律的算同种分解)?请直接提交该整数(千万不要提交详细的分解式!)。
请严格按照要求,通过浏览器提交答案。
注意:只提交分解的种类数,不要写其它附加内容,比如:说明性的文字标题:金蝉素数考古发现某古墓石碑上刻着一个数字:13597,后研究发现:这是一个素数!并且,去掉首尾数字仍是素数!并且,最中间的数字也是素数!这样特征的数字还有哪些呢?通过以下程序的帮助可以轻松解决。
请仔细阅读代码,并填写划线部分缺失的代码。
public class A{static boolean isPrime(int n){if(n<=1) return false;for(int i=2; i*i<=n; i++){if(n%i==0) return false;}return true;}static void f(int[] x, int k){if(_____________________________){ // 填空位置if(isPrime(x[0]*10000 + x[1]*1000 + x[2]*100 + x[3]*10 + x[4]) &&isPrime(x[1]*100 + x[2]*10 + x[3]) &&isPrime(x[2]))System.out.println(""+x[0]+x[1]+x[2]+x[3]+x[4]);return;}for(int i=k; i<x.length; i++){{int tmp=x[k]; x[k]=x[i]; x[i]=tmp; }f(x,k+1);{int tmp=x[k]; x[k]=x[i]; x[i]=tmp; }}}static void test(){int[] x = {1,3,5,7,9};f(x,0);}public static void main(String[] args){test();}}请分析代码逻辑,并推测划线处的代码,通过网页提交。
java蓝桥杯历年真题及答案整理(小结)

java蓝桥杯历年真题及答案整理(⼩结)蓝桥杯java历年真题及答案整理(闭关⼀个⽉,呕⼼沥⾎整理出来的)1 全排列是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA⼀共3!=3*2=6种情况。
package Question1_9;import java.util.Scanner;import java.util.Vector;public class Question1 {public static long count=0;private void fullPermutation(Vector<Character>sourse, Vector<Character> result) {if(sourse.size()==0){for (int i = 0; i < result.size(); i++) {System.out.print(result.elementAt(i));}System.out.print("\n");count++;return;}for (int i = 0; i < sourse.size(); i++) {Vector<Character>tsourse=new Vector<Character>(sourse);Vector<Character>tresult=new Vector<Character>(result);tresult.add(sourse.elementAt(i));tsourse.remove(i);new Question1().fullPermutation(tsourse, tresult);}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();Vector<Character> sourse=new Vector<Character>();Vector<Character> result=new Vector<Character>();for (int i = 0; i < n; i++) {sourse.add((char)('A'+i));}new Question1().fullPermutation(sourse, result);System.out.println(Question1.count);}}2串的简单处理串的处理在实际的开发⼯作中,对字符串的处理是最常见的编程任务。
蓝桥杯java历年真题及答案整理(共129道题目及答案)

1.字符排序算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
package Question1_9;import java.util.Scanner;import java.util.Vector;public class Question1 {public static long count=0;private void fullPermutation(Vector<Character>sourse, Vector<Character> result) {if(sourse.size()==0){for (int i = 0; i < result.size(); i++) {System.out.print(result.elementAt(i));}System.out.print("\n");count++;return;}for (int i = 0; i < sourse.size(); i++) {Vector<Character>tsourse=new Vector<Character>(sourse);Vector<Character>tresult=new Vector<Character>(result);tresult.add(sourse.elementAt(i));tsourse.remove(i);new Question1().fullPermutation(tsourse, tresult);}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();Vector<Character> sourse=new Vector<Character>();Vector<Character> result=new Vector<Character>();for (int i = 0; i < n; i++) {sourse.add((char)('A'+i));}new Question1().fullPermutation(sourse, result);System.out.println(Question1.count);}}方法二:import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.List;import java.util.Scanner;import java.util.Set;public class Demo03 {// 去掉重复元素,放入lispublic static void removeDuplicate(String s,Set<Character> lis){for(char x:s.toCharArray()){lis.add(x);}}// 为方便操作将sets 转lispublic static void convert(List<Character> lis,Set<Character> sets){Iterator<Character> iter = sets.iterator();while(iter.hasNext()){lis.add(iter.next());}}// 检测符合条件的元素组合public static void check(Set<Character> sets){List<Character> lis = new ArrayList<Character>();convert(lis,sets); // 为方便操作将sets 转lisStringBuffer sb = new StringBuffer();for(int i=0;i<lis.size()-2;i++){for(int j=i+1;j+1<lis.size();j++){ // 向后添加两位,所以j+1<lis.size() for(int k=j+1;k<lis.size();k++){sb.append(lis.get(i));sb.append(lis.get(j));sb.append(lis.get(k));System.out.println(sb); // 输出组合sb.setLength(0); // 清空}}}}public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("输入串(不大于30个字符)。
蓝桥杯Java试题汇总-共48页

1. 历届试题核桃的数量问题描述小张是软件项目经理,他带领3个开发组。
工期紧,今天都在加班呢。
为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。
他的要求是:1. 各组的核桃数量必须相同2. 各组内必须能平分核桃(当然是不能打碎的)3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)输入格式输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30)输出格式输出一个正整数,表示每袋核桃的数量。
样例输入12 4 5样例输出120样例输入23 1 1 样例输出2 3JAVA源代码1import java.util.Scanner;2public class Main {34public static void main(String[]args){5 Scanner sc=new Scanner(System.in);6int a=sc.nextInt();7int b=sc.nextInt();8int c=sc.nextInt();9int i;10for(i=1;;i++){11if(i%a==0&&i%b==0&&i%c==0)1213break;14 }15 System.out.println(i);16}}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+1FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。
输入格式仅有一个数:N<201。
本科2013蓝桥杯JAVA A组

2013年蓝桥杯预赛Java本科A组试题分类:算法学习2013-05-06 08:181728人阅读评论(0)收藏举报蓝桥杯2013年java本科A组预赛试题算法algorithm第四届“蓝桥杯”全国软件专业人才设计与创业大赛选拔赛Java本科A组考生须知:l 考试开始后,选手首先下载题目到本机不被还原的盘符,并使用考场现场公布的解压密码解压试题。
l 考试时间为9:00-13:00,共4个小时。
13点整时间截止时,将无法提交答案。
选手因考试结束不能提交答案的,责任由选手自负。
l 在考试强制结束前,选手可以主动结束考试(需要身份验证),结束考试后将无法继续提交或浏览答案。
l 选手可浏览自己已经提交的答案。
l 对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
l 选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等与身份有关的信息或其它与竞赛题目无关的内容,否则成绩无效。
l 选手必须通过浏览器方式提交自己的答案。
选手在其它位置的作答或其它方式提交的答案无效。
试题包含三种类型:“结果填空”、“代码填空”与“程序设计”。
结果填空题:要求参赛选手根据题目描述直接填写结果。
求解方式不限。
不要求源代码。
把结果填空的答案直接通过网页提交即可,不要书写多余的内容,比如:注释说明。
代码填空题:要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不超过一条语句(即中间不能出现分号)。
把代码填空的答案(仅填空处的答案,不包括题面已存在的代码)直接通过网页提交即可,不要书写多余的内容,比如:注释或说明文字。
程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。
考生的程序只有能运行出正确结果,才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
所有源码必须在同一文件中。
调试通过后,拷贝提交。
2013年蓝桥杯软件大赛预赛Java高职专组 试题

第四届“蓝桥杯”全国软件专业人才设计与创业大赛选拔赛Java高职高专组考生须知:●考试开始后,选手首先下载题目到本机不被还原的盘符,并使用考场现场公布的解压密码解压试题。
●考试时间为9:00-13:00,共4个小时。
13点整时间截止时,将无法提交答案。
选手因考试结束不能提交答案的,责任由选手自负。
●在考试强制结束前,选手可以主动结束考试(需要身份验证),结束考试后将无法继续提交或浏览答案。
●选手可浏览自己已经提交的答案。
●对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
●选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等与身份有关的信息或其它与竞赛题目无关的内容,否则成绩无效。
●选手必须通过浏览器方式提交自己的答案。
选手在其它位置的作答或其它方式提交的答案无效。
●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”。
结果填空题:要求参赛选手根据题目描述直接填写结果。
求解方式不限。
不要求源代码。
把结果填空的答案直接通过网页提交即可,不要书写多余的内容,比如:注释说明。
代码填空题:要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不超过一条语句(即中间不能出现分号)。
把代码填空的答案(仅填空处的答案,不包括题面已存在的代码)直接通过网页提交即可,不要书写多余的内容,比如:注释或说明文字。
程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。
考生的程序只有能运行出正确结果,才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
所有源码必须在同一文件中。
调试通过后,拷贝提交。
注意:不要使用package语句。
源程序中只能出现JDK1.5中允许的语法或调用。
不能使用1.6或更高版本的特性。
注意:选手代码的主类名必须为:Main,否则会被判为无效代码。
蓝桥杯预赛题目与答案

蓝桥杯预赛题目1第一题标题:啤酒和饮料啤酒每罐2.3元,饮料每罐1.9元。
小明买了若干啤酒和饮料,一共花了82.3元。
我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。
注意:答案是一个整数。
请通过浏览器提交答案。
不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。
#include <stdio.h>void main() { int pj,yl; //啤酒与饮料double sum=82.3; for(pj=0; pj<=20; pj++) { yl=(int)((sum-pj*2.3)/1.9); if(pj*2.3+yl*1.9==sum) { printf("pj=%d,yl=%d\n",pj,yl); //pj=11 yl=30 } } }第二题标题:切面条一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?答案是个整数,请通过浏览器提交答案。
不要填写任何多余的内容。
#include <stdio.h> void main(){ int qie(int n); int g(int n); int sum=0; //面条总数int n=10; sum=qie(n); printf("%d\n",sum); }int qie(int n) //折叠n次以后,切一刀后的面条数{ int g(int n); if(n==1) { return 3; } else { return g(n-1)+ qie(n-1); //g(n)是有所有面条都有折痕一边的面条数} }int g(int n) { if(n==1) { return 2; } else { return g(n-1)*2; } }-----1025第三题标题:李白打酒话说大诗人李白,一生好饮。
2013年第四届蓝桥杯JavaB组省赛试题解析

2013年第四届蓝桥杯JavaB组省赛试题解析题⽬及解析如下:题⽬⼤致介绍:第⼀题到第四题是结果填空,⽅法不限只要得到最后结果就⾏第五题和第六题是代码填空题,主要考察算法基本功和编程基本功第七题到第⼗题是编程题,要求编程解决问题第⼀题世纪末的星期曾有邪教称1999年12⽉31⽇是世界末⽇。
当然该谣⾔已经不攻⾃破。
还有⼈称今后的某个世纪末的12⽉31⽇,如果是星期⼀则会....有趣的是,任何⼀个世纪末的年份的12⽉31⽇都不可能是星期⼀!! 于是,“谣⾔制造商”⼜修改为星期⽇......1999年的12⽉31⽇是星期五,请问:未来哪⼀个离我们最近的⼀个世纪末年(即xx99年)的12⽉31⽇正好是星期天(即星期⽇)?请回答该年份(只写这个4位整数,不要写12⽉31等多余信息)这个题可以使⽤Java中的Calendar类来做,考试的时候直接看API就⾏,平时了解⼀下就⾏了,代码如下:1import java.util.Calendar;23// 22994public class t1 {56public static void main(String[] args) {7 Calendar canlendar = Calendar.getInstance();8for(int year = 1999; year < 5000; year+=100) {9 canlendar.set(Calendar.YEAR, year);10 canlendar.set(Calendar.MONTH, 11); // 12⽉11 canlendar.set(Calendar.DAY_OF_MONTH, 31);12 System.out.println(canlendar.toInstant()); // 输出年⽉⽇13 System.out.println(canlendar.get(Calendar.DAY_OF_WEEK)); // 输出星期⼏14if(canlendar.get(Calendar.DAY_OF_WEEK) == 1) {15// 注: 1表⽰星期⽇16 System.out.println(year);17break;18 }19 }20 }2122 }第⼆题马虎的算式⼩明是个急性⼦上⼩学的时候经常把⽼师写在⿊板上的题⽬抄错了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四届“蓝桥杯”全国软件专业人才设计与创业大赛选拔赛Java高职高专组资源来自网上,2013年蓝桥杯预赛提供者——————(叫我雷锋)1.标题: 猜年龄美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。
他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。
于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。
我年龄的4次方是个6位数。
这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。
”请你推算一下,他当时到底有多年轻。
通过浏览器,直接提交他那时的年龄数字。
注意:不要提交解答过程,或其它的说明文字。
2.标题: 组素数素数就是不能再进行等分的数。
比如:2 3 5 7 11 等。
9 = 3 * 3 说明它可以3等分,因而不是素数。
我们国家在1949年建国。
如果只给你1 9 4 9 这4个数字卡片,可以随意摆放它们的先后顺序(但卡片不能倒着摆放啊,我们不是在脑筋急转弯!),那么,你能组成多少个4位的素数呢?比如:1949,4919 都符合要求。
请你提交:能组成的4位素数的个数,不要罗列这些素数!!注意:不要提交解答过程,或其它的辅助说明文字。
3.标题: 马虎的算式小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次,老师出的题目是:36 x 495 = ?他却给抄成了:396 x 45 = ?但结果却很戏剧性,他的答案竟然是对的!!因为36 * 495 = 396 * 45 = 17820类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54假设a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)能满足形如:ab * cde = adb * ce 这样的算式一共有多少种呢?请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。
满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。
答案直接通过浏览器提交。
注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。
4.标题: 第39级台阶小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶。
先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。
那么,上完39级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案。
要求提交的是一个整数。
注意:不要提交解答过程,或其它的辅助说明文字。
5.标题:有理数类有理数就是可以表示为两个整数的比值的数字。
一般情况下,我们用近似的小数表示。
但有些时候,不允许出现误差,必须用两个整数来表示一个有理数。
这时,我们可以建立一个“有理数类”,下面的代码初步实现了这个目标。
为了简明,它只提供了加法和乘法运算。
class Rational{p rivate long ra;p rivate long rb;p rivate long gcd(long a, long b){if(b==0) return a;return gcd(b,a%b);}p ublic Rational(long a, long b){ra = a;rb = b;long k = gcd(ra,rb);if(k>1){ //需要约分ra /= k;rb /= k;}}// 加法p ublic Rational add(Rational x){return ________________________________________; //填空位置}// 乘法p ublic Rational mul(Rational x){return new Rational(ra*x.ra, rb*x.rb);}p ublic String toString(){if(rb==1) return "" + ra;return ra + "/" + rb;}}使用该类的示例:R ational a = new Rational(1,3);R ational b = new Rational(1,6);R ational c = a.add(b);S ystem.out.println(a + "+" + b + "=" + c);请分析代码逻辑,并推测划线处的代码,通过网页提交注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!6.标题:逆波兰表达式正常的表达式称为中缀表达式,运算符在中间,主要是给人阅读的,机器求解并不方便。
例如:3 + 5 * (2 + 6) - 1而且,常常需要用括号来改变运算次序。
相反,如果使用逆波兰表达式(前缀表达式)表示,上面的算式则表示为:- + 3 * 5 + 2 6 1不再需要括号,机器可以用递归的方法很方便地求解。
为了简便,我们假设:1. 只有+ - * 三种运算符2. 每个运算数都是一个小于10的非负整数下面的程序对一个逆波兰表示串进行求值。
其返回值为一个数组:其中第一元素表示求值结果,第二个元素表示它已解析的字符数。
s tatic int[] evaluate(String x){if(x.length()==0) return new int[] {0,0};char c = x.charAt(0);if(c>='0' && c<='9') return new int[] {c-'0',1};int[] v1 = evaluate(x.substring(1));int[] v2 = __________________________________________; //填空位置int v = Integer.MAX_VALUE;if(c=='+') v = v1[0] + v2[0];if(c=='*') v = v1[0] * v2[0];if(c=='-') v = v1[0] - v2[0];return new int[] {v,1+v1[1]+v2[1]};}请分析代码逻辑,并推测划线处的代码,通过网页提交。
注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!7.标题:核桃的数量小张是软件项目经理,他带领3个开发组。
工期紧,今天都在加班呢。
为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。
他的要求是:1. 各组的核桃数量必须相同2. 各组内必须能平分核桃(当然是不能打碎的)3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)程序从标准输入读入:a b ca,b,c都是正整数,表示每个组正在加班的人数,用空格分开(a,b,c<30)程序输出:一个正整数,表示每袋核桃的数量。
例如:用户输入:2 4 5程序输出:20再例如:用户输入:3 1 1程序输出:3资源约定:峰值内存消耗(含虚拟机)< 64MCPU消耗< 1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。
不要使用jdk1.6及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
8.标题:打印十字图小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg)$$$$$$$$$$$$$$ $$$$ $$$$$$$$$ $$$$ $ $ $$ $$$ $$$$$ $$$ $$ $ $ $ $ $$ $ $$$ $ $$$ $ $$ $ $ $ $ $ $$ $ $ $$$$$ $ $ $$ $ $ $ $ $ $$ $ $$$ $ $$$ $ $$ $ $ $ $ $$ $$$ $$$$$ $$$ $$ $ $ $$$$ $$$$$$$$$ $$$$ $$$$$$$$$$$$$$对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。
输入格式:一个正整数n (n<30) 表示要求打印图形的层数输出:对应包围层数的该标志。
例如:用户输入:1程序应该输出:..$$$$$....$...$..$$$.$.$$$$...$...$$.$$$$$.$$...$...$$$$.$.$$$..$...$....$$$$$..再例如:用户输入:3程序应该输出:..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$.$.$.$$.$.$...$...$.$.$$.$.$$$.$.$$$.$.$$.$...$...$...$.$$.$$$.$$$$$.$$$.$$...$.......$...$$$$.$$$$$$$$$.$$$..$...........$....$$$$$$$$$$$$$..请仔细观察样例,尤其要注意句点的数量和输出位置。
资源约定:峰值内存消耗(含虚拟机)< 64MCPU消耗< 1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。
不要使用jdk1.6及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
9.标题:买不到的数目小明开了一家糖果店。
他别出心裁:把水果糖包成4颗一包和7颗一包的两种。
糖果不能拆包卖。
小朋友来买糖的时候,他就用这两种包装来组合。
当然有些糖果数目是无法组合出来的,比如要买10 颗糖。
你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。
大于17的任何数字都可以用4和7组合出来。
本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。
输入:两个正整数,表示每种包装中糖的颗数(都不多于1000)要求输出:一个正整数,表示最大不能买到的糖数例如:用户输入:4 7程序应该输出:17再例如:用户输入:3 5程序应该输出:7资源约定:峰值内存消耗(含虚拟机)< 64MCPU消耗< 3000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。