2017届蓝桥杯java_2017第八届蓝桥杯JavaC组决赛(国赛)试题汇总及试题详解-Go语言中文社区...
目錄
題解待更新
第一題:數位和
題目描述
數學家高斯很小的時候就天分過人。一次老師指定的算數題目是:1+2+...+100。
高斯立即做出答案:5050!
這次你的任務是類似的。但并非是把一個個的數字加起來,而是對該數字的每一個數位作累加。
這樣從1加到100的“和”是:901
從10加到15是:21,也就是:1+0+1+1+1+2+1+3+1+4+1+5,這個口算都可以出結果的。
按這樣的“加法”,從1加到1000是多少呢? 請通過瀏覽器提交該結果。
當然,我們并不期望你能像高斯一樣,發現數字背后深奧的秘密,只要請計算機幫忙,一切都easy!
注意:你需要提交的是一個整數,不要填寫任何多余的內容(比如:說明性文字)
第二題:數字劃分
題目描述
w星球的長老交給小明一個任務:
1,2,3...16 這16個數字分為兩組。
要求:
這兩組數字的和相同,
并且,兩組數字的平方和也相同,
并且,兩組數字的立方和也相同。
請你利用計算機的強大搜索能力解決這個問題。
并提交1所在的那個分組的所有數字。
這些數字要從小到大排列,兩個數字間用一個空格分開。
即類似:1 4 5 8 ... ?這樣的答案。
注意,只提交這一組數字,不要填寫任何多余的內容。
----------------------------------------
笨笨有話說:
只要一個組的成員確定了,另一個組的成員也就確定了。枚舉一個組的成員就可以了。
憑直覺,兩個組的成員數目不會差太多吧。
歪歪有話說:
既然求 1 所在的那個組,那只要枚舉剩余的成員就可以了。
貌似都是8個成員的可能性很大啊。
第三題:樹形顯示
題目描述
對于分類結構可以用樹形來形象地表示。比如:文件系統就是典型的例子。
樹中的結點具有父子關系。我們在顯示的時候,把子項向右縮進(用空格,不是tab),并添加必要的連接線,以使其層次關系更醒目。
下面的代碼就是為了這個目的的,請仔細閱讀源碼,并填寫劃線部分缺少的代碼。
import java.util.*;
class MyTree
{
private Map> ?map_ch = new HashMap>();
private Map map_pa = new HashMap();
public void add(String parent, String child)
{
map_pa.put(child, parent);
List lst = map_ch.get(parent);
if(lst==null){
lst = new ArrayList();
map_ch.put(parent, lst);
}
lst.add(child);
}
public String get_parent(String me){
return map_pa.get(me);
}
public List get_child(String me){
return map_ch.get(me);
}
private String space(int n)
{
String s = "";
for(int i=0; i
return s;
}
private boolean last_child(String x){
String pa = map_pa.get(x);
if(pa==null) return true;
List lst = map_ch.get(pa);
return lst.get(lst.size()-1).equals(x);
}
public void show(String x){
String s = "+--" + x;
String pa = x;
while(true){
pa = map_pa.get(pa);
if(pa==null) break;
s = ___________________________________ ; ?// 填空
}
System.out.println(s);
}
public void dfs(String x){
show(x);
List lst = map_ch.get(x);
if(lst==null) return;
for(String it: lst){
dfs(it);
}
}
}
public class TreeView
{
public static void main(String[] args)
{
MyTree tree = new MyTree();
tree.add("root", "dog");
tree.add("root", "cat");
tree.add("root", "duck");
tree.add("dog", "AAdog");
tree.add("dog", "BBdog");
tree.add("dog", "CCdog");
tree.add("AAdog", "AAdog01");
tree.add("AAdog", "AAdog02");
tree.add("cat", "XXcat");
tree.add("cat", "YYcat");
tree.add("XXcat","XXcat-oo");
tree.add("XXcat","XXcat-qq");
tree.add("XXcat-qq", "XXcat-qq-hahah");
tree.add("duck", "TTduck");
tree.add("TTduck", "TTduck-001");
tree.add("TTduck", "TTduck-002");
tree.add("TTduck", "TTduck-003");
tree.add("YYcat","YYcat.hello");
tree.add("YYcat","YYcat.yes");
tree.add("YYcat","YYcat.me");
tree.dfs("root");
}
}
對于題目中的測試數據,輸出結果:
+--root
+--dog
| ? ?+--AAdog
| ? ?| ? ?+--AAdog01
| ? ?| ? ?+--AAdog02
| ? ?+--BBdog
| ? ?+--CCdog
+--cat
| ? ?+--XXcat
| ? ?| ? ?+--XXcat-oo
| ? ?| ? ?+--XXcat-qq
| ? ?| ? ? ? ? +--XXcat-qq-hahah
| ? ?+--YYcat
| ? ? ? ? +--YYcat.hello
| ? ? ? ? +--YYcat.yes
| ? ? ? ? +--YYcat.me
+--duck
+--TTduck
+--TTduck-001
+--TTduck-002
+--TTduck-003
如有平字體對齊問題,可以參見圖【p1.png】
注意,只填寫劃線部分缺少的代碼,不要抄寫已有的代碼或符號。
p1.png
第四題:小數第n位
題目描述
我們知道,整數做除法時,有時得到有限小數,有時得到無限循環小數。
如果我們把有限小數的末尾加上無限多個0,它們就有了統一的形式。
本題的任務是:在上面的約定下,求整數除法小數點后的第n位開始的3位數。
輸入:
一行三個整數:a b n,用空格分開。a是被除數,b是除數,n是所求的小數后位置(0
輸出:
一行3位數字,表示:a除以b,小數后第n位開始的3位數字。
比如:
輸入:
1 8 1
程序應該輸出:
125
再比如:
輸入:
1 8 3
程序應該輸出:
500
再比如:
輸入:
282866 999000 6
程序應該輸出:
914
資源約定:
峰值內存消耗 < 256M
CPU消耗 ?< 1000ms
請嚴格按要求輸出,不要畫蛇添足地打印類似:“請您輸入...” 的多余內容。
所有代碼放在同一個源文件中,調試通過后,拷貝提交該源碼。
注意:不要使用package語句。不要使用jdk1.7及以上版本的特性。
注意:主類的名字必須是:Main,否則按無效代碼處理。
----------------------------------------
笨笨有話說:
這個除法小學就會算啊,模擬手算除法的過程就可以了吧。
只是數有點大啊....
管它呢,能算多遠算多遠....
歪歪有話說:
如果我能確定循環節從哪里開始到哪里結束,再大的數不過就是與它取模的余數等價啊
第五題:分考場
題目描述
n個人參加某項特殊考試。
為了公平,要求任何兩個認識的人不能分在同一個考場。
求是少需要分幾個考場才能滿足條件。
輸入格式:
第一行,一個整數n(1
第二行,一個整數m,表示接下來有m行數據
以下m行每行的格式為:兩個整數a,b,用空格分開 (1<=a,b<=n) ?表示第a個人與第b個人認識。
輸出格式:
一行一個整數,表示最少分幾個考場。
例如:
輸入:
5
8
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5
程序應該輸出:
4
再比如:
輸入:
5
10
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5
則程序應該輸出:
5
資源約定:
峰值內存消耗 < 256M
CPU消耗 ?< 1000ms
請嚴格按要求輸出,不要畫蛇添足地打印類似:“請您輸入...” 的多余內容。
所有代碼放在同一個源文件中,調試通過后,拷貝提交該源碼。
注意:不要使用package語句。不要使用jdk1.7及以上版本的特性。
注意:主類的名字必須是:Main,否則按無效代碼處理。
第六題:合根植物
題目描述
w星球的一個種植園,被分成 m * n 個小格子(東西方向m行,南北方向n列)。每個格子里種了一株合根植物。
這種植物有個特點,它的根可能會沿著南北或東西方向伸展,從而與另一個格子的植物合成為一體。
如果我們告訴你哪些小格子間出現了連根現象,你能說出這個園中一共有多少株合根植物嗎?
輸入格式:
第一行,兩個整數m,n,用空格分開,表示格子的行數、列數(1
接下來一行,一個整數k,表示下面還有k行數據(0
接下來k行,第行兩個整數a,b,表示編號為a的小格子和編號為b的小格子合根了。
格子的編號一行一行,從上到下,從左到右編號。
比如:5 * 4 的小格子,編號:
1 ?2 ?3 ?4
5 ?6 ?7 ?8
9 ?10 11 12
13 14 15 16
17 18 19 20
樣例輸入:
5 4
16
2 3
1 5
5 9
4 8
7 8
9 10
10 11
11 12
10 14
12 16
14 18
17 18
15 19
19 20
9 13
13 17
樣例輸出:
5
其合根情況參考圖[p1.png]
資源約定:
峰值內存消耗 < 256M
CPU消耗 ?< 2000ms
請嚴格按要求輸出,不要畫蛇添足地打印類似:“請您輸入...” 的多余內容。
所有代碼放在同一個源文件中,調試通過后,拷貝提交該源碼。
注意:不要使用package語句。不要使用jdk1.7及以上版本的特性。
注意:主類的名字必須是:Main,否則按無效代碼處理。
總結
以上是生活随笔為你收集整理的2017届蓝桥杯java_2017第八届蓝桥杯JavaC组决赛(国赛)试题汇总及试题详解-Go语言中文社区...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# java 语法_Java与C#的语
- 下一篇: java在程序中加入音频_在任意Java