2013年蓝桥杯校内选拔赛C语言B组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.标题:满二叉树

一般情况下,二叉树通过含有指针的数据结构来存储。但对特殊情形,也可以简化存储。

比如满二叉树的情形:除了最后一层的叶子节点外,所有的节点都有完整的左右子节点。我们可以按照树的逐层遍历顺序把节点存在数组中。当然,需要从某个节点的序号计算出它的父亲节点或者两个孩子节点。

下面代码的目标是求某节点的父节点的。请填写划线部分缺少的代码。

// 返回k号节点的父节点数据

// data: 存储满二叉树的数组

// k: 当前节点的索引号(即数组下标,从0开始)

intget_parent(int* data, int k)

{

return data[ _______________ ]; //填空位置

}

请严格按照格式,通过浏览器提交答案。

注意:只提交划线部分缺少的内容,不要写其它附加内容,比如:说明性的文字。

注意选择自己使用的编译器类型

答案:(k-1)/2

题目标题: 堆煤球

小明的爷爷很怀旧,冬天来了他还是要自己做煤球。

并且,爷爷把煤球堆放得十分整齐有规律:最上边一层只有1个煤球。第二层4个煤球摆成正方形,再下面9个煤球也是摆成正方形。总之,第n 层就是边长为n 的正方形。这样的结构既通风又稳固。

小明数了数,一共有30层,请你帮助计算一下,一共有多少个煤球?___________ 请通过浏览器提交答案。

注意:只提交数字,不要求解过程或公式。

注意:不要书写其它的内容(比如:说明性的文字)。

答案:9455

3.

题目标题: 大小之差

某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。

该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰好包含了组成原6位数同样的数字。

比如:766431- 134667 = 631764 就是具有这样特征的数字。

你还能找到另一个这样的6位数吗?

请填写它重新排列数位后得到的最大数:________________

请通过浏览器提交答案。

注意:只提交另一个6位数,题中已经给出的这个不要提交。

注意:不要书写其它的内容(比如:说明性的文字)。

答案: 995544或者955554 ps当时没看到恰好包含了组成原6位数同样的数字

4.标题:回文数字

观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。

本题要求你找到一些5位或6位的十进制数字。满足如下要求:

该数字的各个数位之和等于输入的整数。

【输入格式】

一个正整数n (10

【输出格式】

若干行,每行包含一个满足要求的5位或6位整数。

数字按从小到大的顺序排列。

如果没有满足条件的,输出:-1

【样例输入】

44

【样例输出】

99899

499994

589985

598895

679976

688886

697796

769967

778877

787787

796697

859958

868868

877778

886688

895598

949949

958859

967769

976679

985589

994499

【样例输入2】

60

【样例输出2】

-1

【资源约定】

峰值内存消耗< 64M

CPU消耗< 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSIC/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中#include ,不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

[cpp]view plaincopyprint?

1.#include

2.int a[6];

3.int temp=0;

4.int hui(int n)

5.{

6.int i, j, k;

7. i = 0;

8.while (n)

9. {

10. a[i++] = n%10;

11. n = n/10;

12. }

13. j = 0;

14. k = i-1;

15.while (j < k)

16. {

17.if (a[j++] != a[k--])

18.return 0;

19. }

20.for (i=0; i<6;i++)

21. temp+=a[i];

22.return 1;

23.}

24.int main()

25.{

26.int val;

27.int i,j;

28. scanf("%d", &val);

29.if(val<2||val>54)

30. {

31. printf("-1\n");

32.return 0;

33. }

34.for (i=10000; i<1000000; i++)

35. {

36. temp=0;

37.if (hui(i)&&temp == val)

38. {

39. printf("%d\n", i);

40. }

41. }

42.}

ps:当时大脑短路啊,竟然没敢暴力一遍,卡住了

5.标题:数字游戏

栋栋正在和同学们玩一个数字游戏。

游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈。栋栋首先说出数字1。接下来,坐在栋栋左手边的同学要说下一个数字2。再下面的一个同学要从上一个同学说的数字往下数两个数说出来,也就是说4。下一个同学要往下数三个数,说7。依次类推。

为了使数字不至于太大,栋栋和同学们约定,当在心中数到k 时,下一个数字重新从1开始数。例如,当k=13时,栋栋和同学们报出的前几个数依次为:

1, 2, 4, 7, 11, 3, 9, 3, 11, 7。

游戏进行了一会儿,栋栋想知道,到目前为止,他所有说出的数字的总和是多少。

【输入格式】

相关文档
最新文档