2015年第六届蓝桥杯JavaB组省赛试题解析

题目及解析如下:

题目大致介绍:

第一题到第三题以及第六题、第七题是结果填空,方法不限只要得到最后结果就行

第四题和第五题是代码填空题,主要考察算法基本功和编程基本功

第八题到第十题是编程题,要求编程解决问题

第一题  三角形面积

送分题,每个人都应该会的

 1 // 三角形面积
 2 // answer: 28
 3 
 4 public class t1 {
 5 
 6     public static void main(String[] args) {
 7         System.out.println(64 - 8 - 3 * 4 - 4 * 4);
 8     }
 9     
10 }

第二题  立方变自身

 1 // 立方变自身
 2 // 观察下面的现象,某个数字的立方,按位累加仍然等于自身。
 3 // 1^3 = 1 
 4 // 8^3  = 512    5+1+2=8
 5 // 17^3 = 4913   4+9+1+3=17
 6 // ...
 7 // 请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?
 8 
 9 // answer: 6
10 
11 public class t2 {
12     
13     public static void main(String[] args) {
14         int res = 0;
15         for(int i = 1; i<99; i++) {
16             int s = i * i * i;
17             int sum = calSum(s);
18             if(sum == i) {
19                 res++;
20                 System.out.println(res + " " + i);
21             }
22         }
23         
24         System.out.println(res);
25     }
26 
27     private static int calSum(int s) {
28         String str = String.valueOf(s);
29         int sum = 0;
30         for(int i = 0; i<str.length(); i++) {
31             sum += str.charAt(i) - '0';
32         }
33         
34         
35         return sum;
36     }
37     
38 }

这个题也算是送分题

第三题  三羊献瑞

暴力求解,注意看清楚,别看错了!然后可以推导出某些位置的数,比如下面的三就是1,祥就是9,羊就是0

 1 // 三羊献瑞
 2 
 3 // 观察下面的加法算式:
 4 //
 5 //
 6 //      祥 瑞 生 辉
 7 //  +   三 羊 献 瑞
 8 //-------------------
 9 //   三 羊 生 瑞 气
10 //
11 //
12 // 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
13 //
14 // 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容
15 
16 // answer: 1085
17 
18 public class t3 {
19 
20     public static void main(String[] args) {
21 
22         for (int a = 1; a <= 9; a++) {
23             for (int b = 0; b <= 9; b++) {
24                 if(b!=a)
25                 for (int c = 0; c <= 9; c++) {
26                     if(c!=a&&c!=b)
27                     for (int d = 0; d <= 9; d++) {
28                         if(d!=c&&d!=b&&d!=a)
29                         for (int i = 1; i <= 9; i++) {
30                             if(i!=d&&i!=c&&i!=b&&i!=a)
31                             for (int j = 0; j <= 9; j++) {
32                                 if(j!=i&&j!=d&&j!=c&&j!=b&&j!=a)
33                                 for (int k = 0; k <= 9; k++) {
34                                     int num1 = a * 1000 + b * 100 + c * 10 + d;
35                                     int num2 = i * 1000 + j * 100 + k * 10 + b;
36                                     int res = num1 + num2;
37                                     if(k!=j&&k!=i&&k!=d&&k!=c&&k!=b&&k!=a)
38                                     for(int q=0; q<=9; q++) {
39                                         int aim = i * 10000 + j * 1000 + c * 100 + b * 10 + q;
40                                         if(q!=k&&q!=j&&q!=i&&q!=d&&q!=c&&q!=b&&q!=a)
41                                         if(res == aim) {
42                                             System.out.println(num1 + " + " + num2 + " = " + res + " aim: " + aim);
43                                         }
44                                     }
45                                 }
46                             }
47                         }
48                     }
49                 }
50             }
51         }
52 
53     }
54 
55 }

第四题  循环节长度

 1 // 循环节长度
 2 
 3 // 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
 4 // 比如,11/13=6=>0.846153846153.....  其循环节为[846153] 共有6位。
 5 // 下面的方法,可以求出循环节的长度。
 6 //
 7 //
 8 // 请仔细阅读代码,并填写划线部分缺少的代码。
 9 
10 public class t4 {
11 
12     public static int f(int n, int m) {
13         n = n % m;
14         Vector v = new Vector();
15 
16         for (;;) {
17             v.add(n);
18             n *= 10;
19             n = n % m;
20             if (n == 0)
21                 return 0;
22             if (v.indexOf(n) >= 0) {
23                 return v.size() - v.indexOf(n); // 填空
24             }
25         }
26     }
27 
28     public static void main(String[] args) {
29 
30         for (int i = 1; i <= 17; i++) {
31             for (int j = 1; j <= 17; j++) {
32                 if (i % j != 0) {
33                     System.out.println(i + " " + j + " " + (double)i/j + " " + f(i, j));
34                 }
35             }
36         }
37         
38 
39     }
40 
41 }

第五题 九数组分数

第六题 加法变乘法

第七题  牌型种数

第八题  饮料换购

第九题  垒骰子

第十题  生命之树

猜你喜欢

转载自www.cnblogs.com/wyb666/p/10787363.html