[A] Ray Through Glasses
假设我们有2块背对背合在一起的玻璃。当一道光线射进此玻璃时,可能穿透或反射。若以n代表一道光线射进此玻璃时反射的次数,a n 即是代即是表一道光线射进玻璃反射n次的方法数,这个问题要请你求出a n。下图展现出当n=0,1,2的情形。
Input
每一列有1个整数n(0 <= n <= 1000)。
Output
每列测试资料输出a n。
Sample Input
0 1 2
Sample Output
1 2 3
[B] Where is the Marble?
Raju和Meena喜欢玩弹珠,他们有许多上面有号码的弹珠。一开始时,Raju按照弹珠上面的号码由小到大排成一列,然后Meena会要求Raju找出某个号码的第一颗弹珠所在的位置。她会算1...2...3...,如果Raju答对了,他就得1分,否则Meena得1分。玩了多次之后谁的得分多谁就赢了。今天你有机会扮演Raju的角色。由于你们都是很聪明的小孩,你会用电脑来计算,而Meena则写了一个程式来检查你花多少时间来回答所有的问题。
Input
输入含有多组测试资料,每组测试资料的第一列有2个正整数N、Q,N代表弹珠的数目,Q代表对于此组测试资料Meena问的问题的数目。接下来的N列每列有一个整数,代表这N个弹珠上的号码(未经排序)。在接下来的Q列每列有一个整数代表Meena所问的问题(球的号码)。所有输入的数字都不会大于10000,且没有负的。
当N=0, Q=0时代表输入结束。请参考Sample Input。
Output
对每组测试资料请先输出一列,这是第几组测试资料。对每组测试资料Meena所问的每个问题输出一列,输出格式如下其中之一:
- x found at y 如果第一个号码为x的弹珠在位置y被发现(位置从1开始算)
- x not found 如果找不到号码为x的弹珠
输出格式请参考Sample Output。
Sample Input | Sample Output |
4 1 2 3 5 1 5 5 2 1 3 3 3 1 2 3 0 0 | CASE# 1: 5 found at 4 CASE# 2: 2 not found 3 found at 3 |
[C] How Many Trees ?
在资料结构中有一个很有名的主题就是二元树。给你节点的数目n,请你求出最多可以形成多少种不同的二元树。
Input
每笔测试资料一列。每列有1个整数n(1 <= n <= 1000),代表有多少个节点。
Output
对每一列输入,请输出可以形成多少种不同的二元树。
Sample Input
1 2 3 9 50 99
Sample Output
1 2 5 4862 1978261657756160653623774456 227508830794229349661819540395688853956041682601541047340
[D] Choose and divide
二项式系数C(m,n)被定义为:
m! | |
C(m,n) = | ─── |
n!(mn)! |
给你4个不为负的整数p,q,r,s,请你算出C(p,q) / C(r,s)
Input
每组测试资料一列。每列有4个整数p,q,r,s(0 <= p,q,r,s < 10000),其中p >= q,r >= s。
Output
每列测试资料输出计算的结果到小数点后5位。你可以假设结果绝不会大于100,000,000。
请参考Sample Output。
Sample Input
10 5 14 9 93 45 84 59 145 95 143 92 995 487 996 488 2000 1000 1999 999 9998 4999 9996 4998
Sample Output
0.12587 505606.46055 1.28223 0.48996 2.00000 3.99960
[E] Packets
有一间工厂生产的东西, 被包装在相同高度h 的正方形容器内, 但其面积大小分别有:1*1, 2*2, 3*3, 4*4, 5*5, 6*6等六种尺寸。这些产品总是用高度为h,面积为6*6的箱子打包后寄给客户。因为成本关系,当然希望将客户所订购的产品放在最少的箱子里寄出。请你写一个程式找出寄送这些产品最少需要多少个箱子,这可以使工厂节省下不少钱。
Input
每组测试资料一列(就是一份订单),含有6个整数。分别代表1*1到6*6产品的数目。若此6个整数均为0代表输入结束。
Output
对每一组测试资料,输出寄送这些产品最少需要多少个箱子。
Sample Input
0 0 4 0 0 1 7 5 1 0 0 0 0 0 0 0 0 3 79 96 94 30 18 14 53 17 12 98 76 54 83 44 47 42 80 3 15 26 13 29 42 40 41 61 36 90 54 66 0 0 0 0 0 0
Sample Output
2 1 3 86 231 137 115 219
[F] Where's Waldorf?
给你一个m*n的字元方块(1 <= m,n <=50),以及一些字串,请你找出这些字串在字元方块中出现的位置。请参考Sample Output。
我们在字元方块中寻找字串的方向可以有8个:往左、往右、往上、往下、往左上、往左下、往右上、往右下。另外,请忽略字元大小写,即 A和a应被视为相同的字元。
Input
输入的第一列有一个整数代表以下有几组测试资料。
每组测试资料的第1列,有2个整数m,n(1 <= m,n <=50),代表接下来的文字方块有m列,每列有n个字元。在文字方块之后的一列有一个整数k,代表接下来的k列为欲搜寻的字串。请参考Sample Input。
Output
每组测试资料中欲搜寻字串,请输出其出现在文字方块中的位置XY。(第X列,第Y行)
如果在文字方块中该字串出现在不只一个地方,请输出在最左上方的那一组(以欲搜寻字串的第一个字元来比较)。所有欲搜寻的字串至少出现一次。
测试资料间也请空一列。
Sample input
2 8 11 abcDEFGhigg hEbkWalDork FtyAwaldORm FtsimrLqsrc byoArBeDeyv Klcbqwikomk strEBGadhrb yUiqlxcnBjf 4 Waldorf Bambi Betty Dagbert 2 2 ab Ca 3 a ba a
Sample Output
2 5 2 3 1 2 7 8 1 1 1 2 1 1
[G] Play on Words
考古学家有时候遇到一些神秘的门,这些门需要解开特定的谜题才能打开。因为没有其他方法可以打开门,这谜题对我们来说非常重要。
在门上有许多磁盘,每个盘子上有一个英文单字在上面。这些盘子必须被安排,使得盘子上的每个单字的第一个字母必须与前一个盘子的单字的最后一个字母相同。例如:acm 后面可以接motorola。你的任务是写一个程式,读入所有的单字然后判断是否可以做出如上述的安排,如此来能打开门。
Input
输入的第一列有一个整数代表以下有几组测试资料。
每组测试资料的第一列,有一个整数N(1 <= N <= 100000),代表盘子的数目。接下来的N列每列有一个英文单字(最少2个,最长1000个小写字母,同样的单字可能会重复出现),代表这N个盘子上的单字。请参考Sample Input。
Output
对每一组测试资料输出一列。如果可以安排盘子的顺序,使得每个单字的第一个字母与前一个盘子的单字的最后一个字母相同,请输出Ordering is possible. ,否则,请输出The door cannot be opened.
请注意:所有的盘子都要被使用到,并且都只能使用一次。
Sample Input | Sample Output |
3 2 acm ibm 3 acm malform mouse 3 dog cat dog | The door cannot be opened. Ordering is possible. The door cannot be opened. |
[H] 487-3279
你有没有注意到有些电话按键上除了123等阿拉伯数字外,还含有英文字母。其中一个原因是生意人喜欢使用客户容易记住的电话号码:有一个办法就是使电话号码可以用一个好记的字或句子来表达。例如:如果你拨TUT-GLOP这个容易记的号码,你就可以打到Waterloo大学。当你想要叫一个披萨来吃的时候,你可以拨310-GINO给GINO披萨。另一个方法是把电话号码分组使他变的好记。例如:如果你想吃Pizza Hut的披萨你会想起他们的电话是"3个10",然后拨3-10-10-10就等着吃了。
一个标准的电话号码的格式为:7个阿拉伯数字,并且在第3及第4个字之间有一个减号。(例如:888-1200)。以下就是电话键盘上各英文字母所在数字键的位置:
A, B, C 在按键 2 D, E, F 在按键 3 G, H, I 在按键 4 J, K, L 在按键 5 M, N, O 在按键 6 P, R, S 在按键 7 T, U, V 在按键 8 W, X, Y 在按键9
请注意Q和Z并不在上面。减号可以视需要任意的加在电话号码中,但是拨号时并不会去拨就是了。所以TUT-GLOP的标准格式为:888-4567,而310-GINO的标准格式为:310-4466。而3-10-10-10的标准格式为:310-1010
2个电话号码如果他们的标准格式是相同的,则这2个电话号码其实是同一个(因为都拨相同的键)。给你许多电话号码,你的任务就是找出在他们都转换成标准格式后,出现不止一次的那些号码(以标准格式输出)。
Input
输入的第一列有一个整数代表共有多少组测试资料。
每组测试资料的第一列有一个正整数N,代表给你的电话号码的数目。接下来的N列每列有1个电话号码,电话号码是由数字或大写英文字母(Q和Z除外)以及减号所组成,其中数字及英文字母的总数一定为7。
第一列与第一组测试资料以及各组测试资料间皆有一空白列。请参考Sample Input。
Output
对每一组测试资料,请输出在输入的电话号码转成标准格式后,出现不止一次的那些号码(以标准格式输出)以及其出现的次数。请依电话号码从小到大排列,如果没有任何电话号码出现超过一次,请输出No duplicates.。各组测试资料间亦请空一列。请参考Sample Output。
Sample Input
2 12 4873279 ITS-EASY 888-4567 3-10-10-10 888-GLOP TUT-GLOP 967-11-11 310-GINO F101010 888-1200 -4-8-7-3-2-7-9- 487-3279 2 8881234 -4-8-7-3-2-7-9-
Sample Output
310-1010 2 487-3279 4 888-4567 3 No duplicates.