2003年四川省选拔测试
时间:4小时
题目文件输入输出分值
括号的匹配Match.exeMatch.inMatch.out50
表达式的数值fractionexefraction.inFraction.out50
邮递员的安排Post.exePost.inPost.out50
题一:括号的匹配
题意描述:
在算术表达式中,除了加、减、乘、除等运算外,往往还有括号。包括有大括号{},中括号[],小括号(),尖括号等。
对于每一对括号,必须先左边括号,然后右边括号;如果有多个括号,则每种类型的左括号和右括号的个数必须相等;对于多重括号的情形,按运算规则,从外到内的括号嵌套顺序为:大括号->中括号->小括号->尖括号。例如,{[()]},{()}为一个合法的表达式,而([{}]),{([])},[{}]都是非法的。
输入:
文件的第一行为一个整数n(1≤n≤100),接下来有n行仅由上述四类括号组成的括号表达式。第i+1行表示第i个表达式。每个括号表达式的长度不超过255。
输出:
在输出文件中有N行,其中第I行对应第I个表达式的合法性,合法输出YES,非法输出NO。
示例:
match.inmatch.out
5
{[()]}
[()]
()[]{}
[{}]
{()}YES
YES
YES
NO
YES
题二:分数的位置
题意描述:
将所有的分母小于N的真分数(分子小于分母,数值小于1)从大到小排列出来后,例如当N=4时,所有的真分数有1/4,1/3,1/2,2/3,3/4。其中第三个真分数为1/2,其分子为1,分母为2。编一个程序,对给定的N,求出第M个真分数的值。
输入:
输入文件中第一行有一个数N,第二行为一个数字M(N