当前位置:文档之家› 2014第五届蓝桥杯JAVA本科B组试题答案

2014第五届蓝桥杯JAVA本科B组试题答案

2014第五届蓝桥杯JAVA本科B组试题及答案∙ 1. 武功秘籍答案:(80,81);(82,83);(84,85);(86,87);(88,89);(90,91);(92,93)∙ 2. 切面条答案:1025import java.util.Scanner;public class Main {public static void main(String []args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();int num = (int)Math.pow(2, n) + 1;System.out.println(num); //结果:2015}}∙ 3. 猜字母答案:qimport java.util.Scanner;/*** 该程序类似与约瑟夫环的问题*/public class Main {public static void main(String[] args) {Scanner s = new Scanner(System.in);String str = "abcdefghijklmnopqrs";String str1 = "";for(int i = 0;i < 106;i++){str1 = str1 + str;}System.out.println(str1.length());boolean[] arr = new boolean[str1.length()];for(int i=0; i<arr.length; i++) {arr[i] = true; //下标为TRUE时说明字母还在圈里 }int leftCount = str1.length();int countNum = 0;int index = 0;while(leftCount > 1) {if(arr[index] == true) { //当在圈里时if(countNum%2 == 0) { //下标为偶数时arr[index] = false; //该字母退出圈子leftCount --; //剩余字母数目减一}countNum++;}index ++; //每报一次数,下标加一if(index == str1.length()) { //是循环数数,当下标大于n时,说明已经数了一圈, index = 0; //将下标设为零重新开始。

countNum = 0;}}for(int i=0; i<str1.length(); i++) {if(arr[i] == true) {System.out.println(i); //输出结果表示下标为1023(第1024个)的字母,即:q }}}}4. 大衍数列答案:i%2==0∙ 5. 圆周率答案:4/(x-1) ∙ 6. 奇怪的分式答案:public class Main {public static void main(String []args){int count = 0;for(int a = 1;a <= 9; a++){for(int b = 1;b <= 9; b++){if(a != b){for(int c = 1;c <= 9;c++){for(int d = 1;d <= 9;d++){if(c != d){double sum1 = (double)b/a * d/c;double sum2 = (double)(b*10+ d)/(a*10+ c);if(sum1 == sum2){count++;}}}}}}System.out.println(count); //输出结果:14}}}/** 这14组数据分别是:2/1*4/5 4/1*5/8 6/1*3/4 6/1*4/6 9/1*5/9 1/2*5/4 6/2*5/6 1/4*8/5 9/4*8/9 1/6*4/3 1/6*6/4 2/6*6/5 1/9*9/5 4/9*9/8PS:这些分式具有对称性*/7. 扑克序列答案:2342A3A4public class 扑克序列{//这题有病,总共就两种情况,题目还给出了 public static int count = 0;public static void main(String[] args) {char [] num = new char[8];f(num, 0);}public static void f(char[] num, int i) {if(i >= num.length){if(judge(num)){show(num);count++;}} else {for (int j = 1; j <= 4; j++) {num[i] = (char)(j+'0');f(num,i+1);}}}public static void show(char[] num) {for (int i = 0; i < num.length; i++) {if(num[i] == '1')System.out.print('A');elseSystem.out.print(num[i]);}System.out.println();}public static boolean judge(char[] num) {boolean[] bool = new boolean[5];int size_A = 0, size_2 = 0, size_3 = 0, size_4 = 0;for (int i = 0; i < num.length; i++) {if(num[i] == '1'){size_A++;if(i+2 < num.length && num[i] == num[i+2] || i - 2 > 0 && num[i-2] == num[i]) bool[0] = true;}if(num[i] == '2'){size_2++;if(i+3 < num.length && num[i] == num[i+3] || i - 3 > 0 && num[i-3] == num[i]) bool[1] = true;}if(num[i] == '3'){size_3++;if(i+4 < num.length && num[i] == num[i+4] || i - 4 > 0 && num[i-4] == num[i]) bool[2] = true;}if(num[i] == '4'){size_4++;if(i+5 < num.length && num[i] == num[i+5] || i - 5 > 0 && num[i-5] == num[i]) bool[3] = true;}}if(size_A == 2 && size_3 == 2 && size_2 == 2 && size_4 == 2){bool[4] = true;}return bool[0] && bool[1] && bool[2] && bool[3] && bool[4];}}8. 分糖果答案:import java.util.Scanner; //求测试是否正确public class Main {public static void main(String args[]){Scanner sc=new Scanner(System.in);int n=sc.nextInt();int a=0,b=0,count=0,x=0;int s[]=new int [n];for(a=0;a<n;a++){s[a]=sc.nextInt();}sc.close();for(;;){for(a=0;a<n;a++){s[a]=s[a]/2;}b=s[0];//变化前的第一个小朋友手里的糖果的一半保留for(a=0;a<n-1;a++){s[a]=s[a]+s[a+1];}s[n-1]=s[n-1]+b;//将第一个小朋友的糖果给最后一个小朋友 for(a=0,x=0;a<n;a++){if(s[a]%2!=0){s[a]=s[a]+1;count++;}else {x++;}}for(a=0;a<n-1;a++){if(s[a]!=s[a+1]){x=0;}}if(x==n){System.out.println(count);break;}}}}9. 地宫取宝10. 矩阵翻硬币答案:import java.util.Scanner;public class 矩阵翻硬币{public static void main(String[] args) {Scanner reader = new Scanner(System.in); int n = reader.nextInt();int m = reader.nextInt();reader.close();int count = 0;int[][] num = new int[n][m];for(int i = 0; i< n; i++){for(int j = 0; j < n; j++){num[i][j] = 1;}for(int i = 0; i< n-1; i++){for(int j = 0; j < m-1; j++){Q(num,i+1,j+1);}}for(int i = 0; i< n; i++){for(int j = 0; j < n; j++){if(num[i][j] == -1){count ++;}}}System.out.println(count);}public static void Q(int[][] num, int x, int y) { num[x-1][y-1] = -num[x][y];for (int i = 2; ; i++) {if(x*i < num.length){num[x*i-1][y-1] = -num[x*i-1][y-1]; }if(y*i < num[x].length){num[x-1][y*i-1] = -num[x-1][y*i-1];if(x*i < num.length && y*i <num[x].length){num[x*i-1][y*i-1] = -num[x*i-1][y*i-1];}if(x*i > num.length && y*i >num[x].length){break;}}return;}}标程:1import java.math.BigInteger;2import java.util.Scanner;3public class Main {4private static BigInteger sqrt(BigInteger n) {5 BigInteger two = BigInteger.valueOf(2);6 BigInteger prv = n.divide(two);7 BigInteger now =prv.add(n.divide(prv)).divide(two);8while (pareTo(now) > 0) {9 prv = now;10 now = prv.add(n.divide(prv)).divide(two);11 }12return now;13 }14public static void main(String[] args) {15 Scanner sc = new Scanner(System.in);16 BigInteger n = sqrt(sc.nextBigInteger());17 BigInteger m = sqrt(sc.nextBigInteger());18 System.out.println(n.multiply(m));19 }20}。

相关主题