第4届蓝桥杯青少年创意编程【国赛】C++ 2013年C组 建议答题时长:60min
1. 编程题

好好学习

汤姆跟爷爷来中国旅游。一天,他帮助中国的小朋友贴标语。

他负责贴的标语是分别写在四块红纸上的四个大字:“好、好、学、习”。

但是汤姆不认识汉字,他就想胡乱地贴成一行。

请你替小汤姆算一下,他这样乱贴,恰好贴对的概率是多少?

答案提交

答案是一个分数,请表示为两个整数比值的形式。例如:1/3 或 2/15 等。如果能够约分,请输出约分后的结果。

注意:只提交这个比值,不要写其它附加内容。比如:多余的空格。

查看答案
2. 编程题

埃及分数

问题描述

古埃及曾经创造出灿烂的人类文明,他们的分数表示却很令人不解。

古埃及喜欢把一个分数分解为类似: 1/a + 1/b 的格式,这里,a 和 b 必须是不同的两个整数,分子必须为 1

比如,2/15 一共有 4 种不同的分解法(姑且称为埃及分解法):

    1/8 + 1/120

    1/9 + 1/45

    1/10 + 1/30

    1/12 + 1/20

那么, 2/45 一共有多少个不同的埃及分解呢(满足加法交换律的算同种分解)? 请直接提交该整数(千万不要提交详细的分解式!)。

答案提交

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

注意:只提交分解的种类数,不要写其它附加内容,比如:说明性的文字

查看答案
3. 编程题

横向打印二叉树

题目描述

二叉树可以用于排序。其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树。

当遇到空子树时,则把该节点放入那个位置。 

比如,10  8  5  7  12  4  的输入顺序,应该建成二叉树如下图所示,其中.表示空白。

...|-12

10-|

...|-8-|

.......|...|-7

.......|-5-|

...........|-4 

本题目要求:根据已知的数字,建立排序二叉树,并在标准输出中横向打印该二叉树。 

输入格式

输入数据为一行空格分开的N个整数。  N< 100,每个数字不超过10000。 

输入数据中没有重复的数字。  

输出格式

输出该排序二叉树的横向表示。为了便于评卷程序比对空格的数目,请把空格用句点代替。

样例输入

10 5 20

样例输出

...|-20

10-|

...|-5

查看答案
4. 编程题

正负金字塔

题目描述

看下面的图形:

 + - + - - + - + - - + - - + -

  - - - + - - - - + - - + - -

   + + - - + + + - - + - - +

    + - + - + + - + - - + -

     - - - - + - - - + - -

      + + + - - + + - - +

       + + - + - + - + -

        + - - - - - - -

         - + + + + + +

          - + + + + +

           - + + + +

            - + + +

             - + +

              - +

               -

它是由正号和负号组成的金字塔形状。其规律是:每个符号的左上方和右上方符号如果相同,则输出为正号,否则为负号。其第一行数据由外部输入。

以下代码实现了该功能。请仔细阅读代码,并填写划线部分缺失的代码。

void f(char* x, int space, int n)

{

int i;

if(n<1) return;

 

for(i=0; i<space; i++) printf(" ");

for(i=0; i<n; i++) printf("%c ", x[i]);

printf("\n");

for(i=0; i<n-1; i++) x[i] = ____________________________;

f(x,space+1,n-1);  

}

 

// 用于f的测试

int test()

{

char x[] = "+-+--+-+--+--+-";

//char x[] = "+-+";

f(x, 5, sizeof(x)-1);

return 0;


}

查看答案
5. 编程题

危险系数

题目描述

抗日战争时期,冀中平原的地道战曾发挥重要作用。

地道的多个站点间有通道连接,形成了庞大的网络,但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。

我们来定义一个危险系数 DF(x, y):

对于两个站点 x 和 y (x != y),如果能找到一个站点 z,当 z 被敌人破坏后,x 和 y 不连通,那么我们称 z 为关于 x, y 的关键点。

相应的,对于任意一对站点 x 和 y,危险系数 DF(x, y) 就表示为这两点之间的关键点个数。

本题的任务是:已知网络结构,求两站点之间的危险系数。

输入格式

第一行包含 2 个整数 n, m,分别代表站点数,通道数;

接下来 m 行,每行两个整数 u, v 代表一条通道;

最后 1 行,两个数 u, v,代表询问两点之间的危险系数DF(u, v)。

输出格式

一个整数,如果询问的两点不连通则输出 -1.

样例输入

7 6

1 3

2 3

3 4

3 5

4 5

5 6

1 6

样例输出

2

数据范围

2 ≤ n ≤ 1000

0 ≤ m ≤ 2000

查看答案
6. 编程题

网络寻路

问题描述

X 国的一个网络使用若干条线路连接若干个节点,节点间的通信是 双向 的。

某重要数据包,为了安全起见,必须恰好被转发两次到达目的地。

该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同的转发路径。

源地址和目标地址可以相同,但中间节点必须不同。

如图所示的网络:

1 -> 2 -> 3 -> 1 是允许的

1 -> 2 -> 1-> 2 或者 1 -> 2 -> 3 -> 2 都是非法的。

输入格式

输入数据的第一行为两个整数 N,M,分别表示节点个数和连接线路的条数。

接下去有 M 行,每行为两个整数 u 和 v,表示节点 u 和 v 联通。

(输入数据保证任意两点最多只有一条边连接,并且没有自己连自己的边,即不存在重边和自环)

输出格式

输出一个整数,表示满足要求的路径条数。

样例输入1

3 3

1 2

2 3

1 3

样例输出1

6

样例输入2

4 4

1 2

2 3

3 1

1 4

样例输出2

10

数据范围

查看答案
试题目录
编程题
1 2 3 4 5 6
赣ICP备20007335号-2