第八届蓝桥杯省赛17java B组_第1页
第八届蓝桥杯省赛17java B组_第2页
第八届蓝桥杯省赛17java B组_第3页
第八届蓝桥杯省赛17java B组_第4页
第八届蓝桥杯省赛17java B组_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,标题: 购物单    小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。    这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。    小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。    现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。    取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。

2、    你的任务是计算出,小明最少需要取多少现金。以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。-*     180.90       88折*      10.25       65折*      56.14        9折

3、*     104.65        9折*     100.30       88折*     297.15        半价*      26.75      

4、65折*     130.62        半价*     240.28       58折*     270.62        8折*     115.87       88

5、折*     247.34       95折*      73.21        9折*     101.00        半价*      79.54     &

6、#160;  半价*     278.44        7折*     199.26        半价*      12.97        9折*     166.30   

7、    78折*     125.50       58折*      84.98        9折*     113.35       68折*     166.57   &#

8、160;    半价*      42.56        9折*      81.90       95折*     131.78        8折*     255.89 &

9、#160;     78折*     109.17        9折*     146.69       68折*     139.33       65折*     141.16  &#

10、160;    78折*     154.74        8折*      59.42        8折*      85.44       68折*     293.70 

11、      88折*     261.79       65折*      11.30       88折*     268.27       58折*     128.29  &

12、#160;    88折*     251.03        8折*     208.39       75折*     128.88       75折*      62.06  

13、60;     9折*     225.87       75折*      12.89       75折*      34.28       75折*      62.16 &

14、#160;     58折*     129.12        半价*     218.37        半价*     289.69        8折-需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余

15、者类推。特别地,半价是按50%计算。请提交小明要从取款机上提取的金额,单位是元。答案是一个整数,类似4300的样子,结尾必然是00,不要填写任何多余的内容。特别提醒:不许携带计算器入场,也不能打开手机。分析,如果用计算器,保准得半小时。手打输入也是麻烦。可以把数据复制进eclipse,然后ctrl+f 替换所有*,所有折字,再把半折替换成50,再把一位数的折数补0,,多少个数据就看行数。ok。其实可以直接读取文档数据来做,自己这方面不熟,2333java view plain copy print?1. import java.util.Scanner;

16、  2.   3. public class test1   4.   5.     public static void main(String args)   6.         Scanner sc = new Scanner(System.in);&

17、#160; 7.         float nums = new float1002;  8.         float sum=0;  9.         for(int i=0;i<50;i+)  10. 

18、0;           numsi0=sc.nextFloat();  11.             numsi1=sc.nextFloat();  12.           13.    &#

19、160;      14.         for(int i=0;i<50;i+)  15.             sum+=(numsi0*numsi1/100);  16.         

20、60;     17.           18.         System.out.println(sum);  19.       20.   21.   22.   23. /*180.90  

21、60;    88 24. 10.25       65 25. 56.14        90 26. 104.65        90 27. 100.30       88 28. 297.15 

22、;       50 29. 26.75       65 30. 130.62        50 31. 240.28       58 32. 270.62        80

23、0;33. 115.87       88 34. 247.34       95 35. 73.21        90 36. 101.00        50 37. 79.54      &#

24、160; 50 38. 278.44        70 39. 199.26        50 40. 12.97        90 41. 166.30       78 42. 125.50  

25、60;    58 43. 84.98        90 44. 113.35       68 45. 166.57        50 46. 42.56        90 47. 81.90

26、       95 48. 131.78        80 49. 255.89       78 50. 109.17        90 51. 146.69       68

27、0;52. 139.33       65 53. 141.16       78 54. 154.74        80 55. 59.42        80 56. 85.44      &#

28、160;68 57. 293.70       88 58. 261.79       65 59. 11.30       88 60. 268.27       58 61. 128.29      

29、60;88 62. 251.03        80 63. 208.39       75 64. 128.88       75 65. 62.06        90 66. 225.87    

30、0;  75 67. 12.89       75 68. 34.28       75 69. 62.16       58 70. 129.12        50 71. 218.37    &

31、#160;   50 72. 289.69        80*/  运行结果:5136.8594答案:52002,标题:纸牌三角形        A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。        下图就是一种排法(如有对齐问题,参看p1.png)。

32、60;             A             9 6            4   8           3 7

33、5 2        这样的排法可能会有很多。        如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?        请你计算并提交该数字。        注意:需要提交的是一个整数,不要提交任何多余内容。这题没什么好说的,考前写好了暴力枚举模板,直接套答案:144java view p

34、lain copy print?1. public class test2   2.   3.     public static void main(String args)   4.         int sum = 0;  5.   

35、0;     for (int a = 1; a <= 9; a+)  6.             for (int b = 1; b <= 9; b+)  7.     &#

36、160;           for (int c = 1; c <= 9; c+)  8.                     for (int d 

37、;= 1; d <= 9; d+)  9.                         for (int e = 1; e <= 9; e+)  10.  

38、0;                          for (int f = 1; f <= 9; f+)  11.          &#

39、160;                      for (int g = 1; g <= 9; g+)  12.              

40、                       for (int h = 1; h <= 9; h+)  13.             

41、0;                           for (int i = 1; i <= 9; i+)  14.         &#

42、160;                                   if (a + b + c + d = a + e 

43、+ f + g && a + b + c + d = d + h + i + g)   15.                       &#

44、160;                         if (a != b && a != c && a != d && a != e &

45、amp;& a != f && a != g && a != h  16.                              

46、60;                          && a != i)  17.                &#

47、160;                                    if (b != c && b != d &&&

48、#160;b != e && b != f && b != g && b != h  18.                          

49、;                                   && b != i)  19.       

50、0;                                                 if&#

51、160;(c != d && c != e && c != f && c != g && c != h && c != i)  20.             

52、                                                if (d&#

53、160;!= e && d != f && d != g && d != h && d != i)  21.                    

54、0;                                            if (e != f &am

55、p;& e != g && e != h && e != i)  22.                              

56、0;                                      if (f != g && f != h &

57、amp;& f != i)  23.                                           

58、                              if (g != h && g != i)  24.       

59、0;                                                 

60、0;                   if (h != i)   25.                       

61、0;                                                 

62、0;       sum+;  26.                                        &

63、#160;                                      27.           

64、60;                                   28.         System.out.println(sum / 

65、2 / 3);  29.   30.       31.   32.   3,标题:承压计算X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每块金属原料的外形、尺寸完全一致,但重量不同。金属材料被严格地堆放成金字塔形。                  &

66、#160;          7                             5 8           &

67、#160;                7 8 8                           9 2 7 2      

68、;                    8 1 4 9 1                         8 1 8 8 4 1   &

69、#160;                    7 9 6 1 4 5 4                       5 6 5 5 6 9 5 6   &

70、#160;                  5 5 4 7 9 3 5 5 1                     7 5 7 9 7 4 7 3 3 1      

71、;              4 6 4 5 5 8 8 3 2 4 3                   1 1 3 3 1 6 6 5 5 4 4 2           &

72、#160;      9 9 9 2 1 9 1 9 2 9 5 7 9                 4 3 3 7 7 9 3 6 1 3 8 8 3 7                3 6 8 1 5 3 9 5 8 3 8 1

73、8 3 3               8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9              8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4           &

74、#160; 2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9            7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6           9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3         

75、5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9         6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4        2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4       7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8

76、2 9 6      1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3     2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8    7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9   7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3

77、6  5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X 其中的数字代表金属块的重量(计量单位较大)。最下一层的X代表30台极高精度的电子秤。假设每块原料的重量都十分精确地平均落在下方的两个金属块上,最后,所有的金属块的重量都严格精确地平分落在最底层的电子秤上。电子秤的计量单位很小,所以显示的数字很大。工作人员发现,其中读数最小的电子秤的示数为:2086458231请你推算

78、出:读数最大的电子秤的示数为多少?注意:需要提交的是一个整数,不要填写任何多余的内容。将第i排的所有金属块放在第i排的第1i位置。这样第k排的第m块就会平均分担到支撑它的下面一排的两个金属块上面。这样只需要从第一排到最后一排依次将重量往下传递。就可以知道最底层的重量。答案:72665192664相当于1 01 2  01 2 3  0外围补0java view plain copy print?1. import java.util.Scanner;  2.   3. public c

79、lass test2   4.   5.     public static void main(String args)   6.         Scanner sc = new Scanner(System.in);  7.      

80、;   double a = new double3030;  8.         double min = 1000000;  9.         double max = 0;  10.     

81、60;     11.         for(int i=0;i<29;i+)  12.             for(int j=0;j<=i;j+)  13.          &

82、#160;      aij=sc.nextDouble();  14.               15.           16.           17.  &

83、#160;      for(int i=1;i<30;i+)  18.             for(int j=0;j<=i;j+)  19.                 if(

84、j=0)  20.                     aij = ai-1j/2.0+aij;  21.                 else  22

85、.                     aij = ai-1j-1/2.0+ ai-1j/2.0+aij;  23.               24.     &#

86、160;     25.         for(int i=0;i<30;i+)  26.             max = Math.max(max, a29i);  27.        

87、;     min = Math.min(min, a29i);  28.           29.           30.         System.out.println(max);  

88、31.         System.out.println(min);  32.         System.out.println(long)(2086458231l/min*max);  33.           34.      

89、0;35.   36.   4,暂时没找到题目 二阶魔方5,标题:取数位 标题:取数位求1个整数的第k位数字有很多种方法。以下的方法就是一种。对于题目中的测试数据,应该打印5。请仔细分析源码,并补充划线部分所缺少的代码。注意:只提交缺失的代码,不要填写任何已有内容或说明性的文字。 今年的代码填空异常简单,10min做完全部。没什么好说的。java view plain copy print?1. public class Main  2.   3

90、.     static int len(int x)  4.         if(x<10) return 1;  5.         return len(x/10)+1;  6.       7. 

91、60; 8.     / 取x的第k位数字  9.     static int f(int x, int k)  10.         if(len(x)-k=0) return x%10;  11.        

92、 return f(x/10,k);  /填空  12.       13.   14.     public static void main(String args)  15.       16.         i

93、nt x = 23513;  17.         /System.out.println(len(x);  18.         System.out.println(f(x,3);  19.       20.   6,标题:最大公共子串最大公共子串长度问题就是

94、:求两个串的所有子串中能够匹配上的最大长度是多少。比如:"abcdkkk" 和 "baabcdadabc",可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4。下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。请分析该解法的思路,并补全划线部分缺失的代码。java view plain copy print?1. public class Main  2.   3.    &#

95、160;static int f(String s1, String s2)  4.       5.         char c1 = s1.toCharArray();  6.         char c2 = s2.to

96、CharArray();  7.   8.         int a = new intc1.length+1c2.length+1;  9.   10.         int max = 0;  11.      

97、   for(int i=1; i<a.length; i+)  12.             for(int j=1; j<ai.length; j+)  13.               &

98、#160; if(c1i-1=c2j-1)   14.                     aij = ai-1j-1+1;  /填空  15.             

99、60;       if(aij > max) max = aij;  16.                   17.             

100、60; 18.           19.   20.         return max;  21.       22.   23.     public static void main(String&#

101、160;args)  24.         int n = f("abcdkkk", "baabcdadabc");  25.         System.out.println(n);  26.       27.  

102、60;7,标题:日期问题小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。  比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。  给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?输入-一个日期,格式是"AA/BB/CC"。&#

103、160; (0 <= A, B, C <= 9)  输出-输出若干个不相同的日期,每个日期一行,格式是"yyyy-MM-dd"。多个日期按从早到晚排列。  样例输入-02/03/04  样例输出-2002-03-04  2004-02-03  2004-03-02  资源约定:峰值内存消耗(含虚拟机) < 256MCPU消耗  < 1000ms比较简单,随便写,写得啰嗦了java view plain copy print?1. import 

104、;java.util.ArrayList;  2. import java.util.Collections;  3. import java.util.HashSet;  4. import java.util.Scanner;  5.   6. public class test7   7.   8.     static String

105、0;aa,bb,cc;  9.     static HashSet<Integer> res = new HashSet<Integer>();  10.     static ArrayList<Integer> list = new ArrayList<Integer>();  11.  

106、60;    12.     static void getDate(String aa,String bb,String cc)  13.           14.         int a;  15.   

107、60;     if(Integer.parseInt(aa)>=0 && Integer.parseInt(aa)<=59)  16.             a = Integer.parseInt("20"+aa);  17.      

108、0;  else  18.             a = Integer.parseInt("19"+aa);  19.           20.         int b 

109、= Integer.parseInt(bb);  21.         int c = Integer.parseInt(cc);  22.           23.         if(a%4=0 && a%100!

110、=0) |a%400=0) && b=2 && c>0 && c<=29)  24.             res.add(Integer.parseInt(""+a+bb+cc);  25.         

111、;if(a%4!=0 && b=2 && c>0 && c<=28)  26.             res.add(Integer.parseInt(""+a+bb+cc);  27.         if(b=1&

112、#160;| b=3 | b=5 | b=7 | b=8 | b=10 | b=12) && c>0 && c<=31)  28.             res.add(Integer.parseInt(""+a+bb+cc); &#

113、160;29.         if(b=4 | b=6 | b=9 | b=11) && c>0 && c<=30)  30.             res.add(Integer.parseInt(""+a+b

114、b+cc);  31.       32.       33.     public static void main(String args)   34.         Scanner sc = new Scanner(Sys

115、tem.in);  35.         String s = sc.nextLine();  36.           37.         String ss = s.split("/"); 

116、0;38.         aa = ss0;  39.         bb = ss1;  40.         cc = ss2;  41.        

117、60;  42.         /年/月/日  43.         getDate(aa, bb, cc);  44.         /月/日/年  45.         

118、;getDate(bb, cc, aa);  46.         /日/月/年  47.         getDate(cc, bb, aa);  48.           49.     &

119、#160;   list.addAll(res);  50.         Collections.sort(list);  51.           52.         for(int i:res)  53.  

120、0;          /System.out.println(i);  54.             System.out.println(""+i).substring(0, 4)+"-"+(""+i).substring(4, 6)+"-"+(&quo

121、t;"+i).substring(6,8);  55.           56.               57.           58.       59. &

122、#160; 60.   8,标题:包子凑数小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。当然有时包子大叔无论如何也凑不出顾客想买的数量。比如一共有3种蒸笼,分别能放4、5和6个包子。而顾客想买7个包子时,大叔就凑不出来了。小明想知道一

123、共有多少种数目是包子大叔凑不出来的。输入-第一行包含一个整数N。(1 <= N <= 100)以下N行每行包含一个整数Ai。(1 <= Ai <= 100)  输出-一个整数代表答案。如果凑不出的数目有无限多个,输出INF。例如,输入:2  4  5   程序应该输出:6  再例如,输入:2  4  6    程序应该输出:INF样例解释:对于样例1,凑不出的数目包括:1, 2, 3, 6, 7, 11。  对于样例2,所有奇数都凑不出来,所以有无限多

124、个。java view plain copy print?1. import java.util.Arrays;  2. import java.util.Scanner;  3.   4. public class test8   5. /比赛的时候看到数据范围这么小,直接穷举了  6.     public static void main(S

125、tring args)   7.         Scanner sc = new Scanner(System.in);  8.           9.         int N = sc.nextInt

126、();  10.         int a = new intN+1;  11.         int b = new int101;/一种蒸笼能凑出的数集  12.         int vis

127、0;= new int101;/标记能否凑出  13.         /初始化  14.         for(int i=0;i<101;i+)  15.             visi=0;  

128、16.           17.           18.         for(int i=0;i<N;i+)  19.             ai=sc

129、.nextInt();  20.           21.         /只拿一种蒸笼  22.         int k=0;  23.         for(int 

130、i=0;i<N;i+)  24.             for(int j=1;j*ai<101;j+)  25.                 visj*ai=1;  26.     

131、0;           bk=j*ai;  27.                 k+;  28.               29.  

132、;         30.         /多个蒸笼 感觉这里有问题 并没有举尽全部情况 也忘记比赛时候怎么写了  31.         for(int i=0;i<k;i+)  32.       

133、      int temp1=0;  33.             int temp2=0;  34.             for(int j=i+1;j<k;j+)  35.  

134、60;              temp1= bi+bj;  36.                 temp2+=bj;  37.          

135、60;      if(temp1<101)  38.                     vistemp1=1;  39.              

136、0;  if(temp2<101)  40.                     vistemp2=1;  41.               42.    &

137、#160;      43.         /小于最小蒸笼的数不能凑出  44.         Arrays.sort(a);  45.         for(int i=1;i<a0;i+)  46.  &

138、#160;          visi=1;  47.           48.           49.         int sum = 0; 

139、60;50.         for(int i=1;i<101;i+)  51.             if(visi=0)  52.               53.   &#

140、160;             sum+;  54.               55.           56.        

141、60;  57.         if(sum+a0-1)>=50)  58.             System.out.println("INF");  59.         else  60.  

142、;           System.out.println(sum);  61.       62.   63.   9,标题: 分巧克力    儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。    小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 &

143、#160;  为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:    1. 形状是正方形,边长是整数      2. 大小相同  例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小Hi计算出最大的边长是多少么?输入第一行包含两个整数N和K。(1 <= N, K <= 100000)  以下N行每行包含两个整数Hi和Wi。(1 <= Hi, Wi <= 1000

144、00)输入保证每位小朋友至少能获得一块1x1的巧克力。   输出输出切出的正方形巧克力最大可能的边长。样例输入:2 10  6 5  5 6  样例输出:2资源约定:峰值内存消耗(含虚拟机) < 256MCPU消耗  < 1000msjava view plain copy print?1. import java.util.Scanner;  2.   3. public class test9  &#

145、160;4.     static int n;  5.     static int k;  6.     static int h = new int 100010;  7.     static int w = new in

146、t 100010;    8.     public static boolean solve(int n)    9.         10.         int res=0,a,b,i;    11.  

147、;       for(i=0;i<n;i+)    12.             13.             a=hi/n;    14.     

148、0;       b=wi/n;    15.             res+=a*b;    16.             17.       

149、  if(res>=k)    18.             return true;    19.         return false;    20.       

150、  21.   22.     public static void main(String args)   23.          int i,low,high;    24.          Scanner

151、60;sc = new Scanner(System.in);  25.          n = sc.nextInt();  26.          k = sc.nextInt();  27.             while(true)    28.                 29.              

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论