OIBH信息学练习赛 #4

概览
题目 四塔问题 算式排版 撕邮票 时限 1s 2s 10s 内存限制 1024K 4096K 2048K 分值 100 150 150 ----------------------------------------
试题1. 四塔问题
“汉诺塔”,是一个众所周知的古老游戏。现在我们把问题稍微改变一下:如果一共有4根柱子, 而不是3根,那么至少需要移动盘子多少次,才能把所有的盘子从第1根柱子移动到第4根柱子上呢? 为了编程方便,您只需要输出这个结果mod 10000的值。 输入 一个正整数n。(0<n<=50000) 输出 一个正整数,表示把n个盘子从第1根柱子移动到第4根柱子需要的最少移动次数mod 10000的值。 样例输入 15 样例输出 129 ----------------------------------------
试题2. 算式排版
算式的排版常常是一件非常令人头疼的事情。不过对于简单的算式,这项工作就并不是很复杂了。 给定一个只包含常数(均为整数,不超过50位),变量(都是1位小写字母)以及 +, -, *, /, ^(乘方), (, ), {, } 构成的算式。 对于任何一个排版之后的算式,我们定义这个算式的“边框”为恰好可以完全盖住这个算式的最小矩形。 例如,算式: 1 .... ---- ====> .... 1234 .... 的边框是一个3*4的矩形,而算式 1+2+3 ====> ..... 的边框是一个1*5的矩形。 { 和 } 的作用是规定计算的顺序,但是不必输出。而 ( 和 ) 不仅规定计算顺序,而且是必须输出的。 要求用以下的规则排版这个算式: [1] 对于算式A,(A)必须满足以下规则: 在A的边框左侧每一行增加一个(,右侧每一行增加一个)。 例如:((12345))的正确输出是: ((12345)) (1/12)的正确输出是: ( 1) (--) (12) [2] 对于算式A和算式B,A+B, A-B 和 A*B 必须满足以下规则: A的分数线和B的分数线对齐(输入保证不会存在繁分式),并且以+(-, *)左右都必须留有一个空格。算式A,B的 分数线,即作为A+B的分数线。 例如:算式:x+y的正确输出是: x + y 算式:{1/x}-y的正确输出是: 1 - - y x 算式:x*(1/y)的正确输出是: (1) x * (-) (y) [3] 对于算式A和算式B,A^B必须满足以下规则:(保证A不是繁分式) 要求B的边框的左下角和A的边框的右上角重合。A^B的分数线定义为A的分数线。 例如:算式{x+y}^{y+x}的正确输出为: y + x x + y <--- 结果的分数线 算式{1/{x+y+z}}^(1/2)的正确输出为: (1) (-) (2) 1 --------- <--- 结果的分数线 x + y + z [4] 对于算式A和算式B,A/B必须满足以下规则:(保证A,B的底数不是分式) 要求A作为分子,B作为分母,A,B之间加上一条分数线。分数线的长度必须恰好既能覆盖A的边框,又能覆盖B的 边框。并且如果A或B边框的宽度(列数)小于分数线宽度,那么A或B右侧的空格个数不多于左侧空格个数,并且 至多比左侧少1个。 新添加的分数线,作为A/B结果的分数线。 例如:1/12345的正确输出是: 1 ----- <--- 结果的分数线 12345 1/1234的正确输出是: 1 ---- <--- 结果的分数线 1234 x^{1/23)/y^{a+b+c}的正确输出是: 1 -- 23 x ---------- <--- 结果的分数线 a + b + c y [5]另外,本题输出比较特别,要求输出算式的边框覆盖的部分必须被字符填满。也就是说,不足的地方全部 应该由空格填充。例如: ......1... .....--... .....23... ....x..... ---------- .a + b + c y......... 上面的.表示应该填充的空格。 输入 一个算式,占一行,长度不超过255个字符。 输出 满足上面要求的排版后的算式。保证算式长、宽均不超过100个字符。 样例输入1 1+2+3+4+1/500 样例输出1 1 1 + 2 + 3 + 4 + --- 500 样例输入2 (1+2+(3+1/4))^x 样例输出2 x ( ( 1)) (1 + 2 + (3 + -)) ( ( 4)) 样例输入3 {1+2+3^4}/100^100 样例输出3 4 1 + 2 + 3 ---------- 100 100 ----------------------------------------
试题3. 撕邮票
在一个无限大的联票中,可以撕出多少种本质不同的n联票呢? 例如:n=3时,可以得到: * ** * ** * ** *** * * * ** * 但是本质不同的只有2种,即: *** 和 ** * 输入: 一个自然数n(0<n<13)。 输出: 一个自然数,代表本质不同的方案总数。 样例输入: 4 样例输出: 5
声明:直接判断+输出,不能获得任何分数。