好好学习
汤姆跟爷爷来中国旅游。一天,他帮助中国的小朋友贴标语。
他负责贴的标语是分别写在四块红纸上的四个大字:“好、好、学、习”。
但是汤姆不认识汉字,他就想胡乱地贴成一行。
请你替小汤姆算一下,他这样乱贴,恰好贴对的概率是多少?
答案提交
答案是一个分数,请表示为两个整数比值的形式。例如:1/3 或 2/15 等。如果能够约分,请输出约分后的结果。
注意:只提交这个比值,不要写其它附加内容。比如:多余的空格。
埃及分数
问题描述
古埃及曾经创造出灿烂的人类文明,他们的分数表示却很令人不解。
古埃及喜欢把一个分数分解为类似: 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 一共有多少个不同的埃及分解呢(满足加法交换律的算同种分解)? 请直接提交该整数(千万不要提交详细的分解式!)。
答案提交
请严格按照要求,通过浏览器提交答案。
注意:只提交分解的种类数,不要写其它附加内容,比如:说明性的文字
横向打印二叉树
题目描述
二叉树可以用于排序。其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树。
当遇到空子树时,则把该节点放入那个位置。
比如,10 8 5 7 12 4 的输入顺序,应该建成二叉树如下图所示,其中.表示空白。
...|-12
10-|
...|-8-|
.......|...|-7
.......|-5-|
...........|-4
本题目要求:根据已知的数字,建立排序二叉树,并在标准输出中横向打印该二叉树。
输入格式
输入数据为一行空格分开的N个整数。 N< 100,每个数字不超过10000。
输入数据中没有重复的数字。
输出格式
输出该排序二叉树的横向表示。为了便于评卷程序比对空格的数目,请把空格用句点代替。
样例输入
10 5 20
样例输出
...|-20
10-|
...|-5
正负金字塔
题目描述
看下面的图形:
+ - + - - + - + - - + - - + -
- - - + - - - - + - - + - -
+ + - - + + + - - + - - +
+ - + - + + - + - - + -
- - - - + - - - + - -
+ + + - - + + - - +
+ + - + - + - + -
+ - - - - - - -
- + + + + + +
- + + + + +
- + + + +
- + + +
- + +
- +
-
它是由正号和负号组成的金字塔形状。其规律是:每个符号的左上方和右上方符号如果相同,则输出为正号,否则为负号。其第一行数据由外部输入。
以下代码实现了该功能。请仔细阅读代码,并填写划线部分缺失的代码。
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;
}
危险系数
题目描述
抗日战争时期,冀中平原的地道战曾发挥重要作用。
地道的多个站点间有通道连接,形成了庞大的网络,但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。
我们来定义一个危险系数 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
网络寻路
问题描述
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
数据范围