信息学竞赛

练习与作业

特色教育 >>信息学竞赛 >>练习与作业

河南省 2004年信息学奥林匹克竞赛模拟试题

来源:程军康|编辑日期:2009-11-06 12:29:26|点击数: |发布:55

河南省 2004年信息学奥林匹克竞赛模拟试题
题一: 排列 (文件名: 001.pas 001.exe)
题目描述:

试编程将 1 至 N ( N ≤ 15 )的自然数序列 1 , 2 ,…, N 重新排列,使任意相邻两数之和为素数。例如 N = 3 时有两种排列方案 123 、 321 满足要求。
每行输出一种排列方案(相邻数字之间用空格分隔)。
最后一行输出排列方案总数。
如果没有排列方案,输出 no
输入输出样例:

输入:
3
输出:
1 2 3
3 2 1
2

题二 赋值问题 (文件名: 002.pas 002.exe)
问题描述 :

在很多程序设计语言中,忘记给变量赋初值的错误常令人头疼。 在下面的问题中,最开始仅有变量 a中有确定的值。变量为单个小写字母, 每行恰好有三个字符,中间一个是赋值运算符'='。请编程求出含N行的程序段运行以后有哪些变量中有确定的值。
输入:

文件名: input.002
第一行 :N (0 输出:

文件名: output.002
如果没有,输出 none 否则在一行中按字母表顺序给出所有有确定值的变量名。输入输出 样例 :

输入:
4
b=a
c=d
d=b
e=f

输出:
a b d
题三: 逻辑表达式 (文件名: 00301.pas 00301.exe 00302.pas 00302.exe 00303.pas 00303.exe)
问题描述 :


由英文字母和符号~、 *、+、()组成逻辑表达式,英文字母表示变量,变量有两种可能的取值,False或True;~、*、+、括号()可改变表达式的运算次序,且可以嵌套。
逻辑 “非”运算的公式如下表:
A
~ A
TRUE
FALSE
FALSE
TRUE

逻辑 “与”和逻辑“或”的运算公式如下表:
A
B
A*B
A+B
FALSE
FALSE
FLASE
FLASE
FALSE
TRUE
FLASE
TRUE
TRUE
FALSE
FALSE
TRUE
TRUE
TRUE
TRUE
TRUE

两个逻辑表达式等价,当且仅当两个公式中相同名字的变量取任何一种值时两个公式的值都相同。如:
A*(B+C) 与 A*B+A*C 等价
A*(~A+B) 与 A*B 等价
(~A+A)*B+C 与 B+C 等价
A*B+A*~B 与 A 等价
而:
A+B 与 A*B 不等价
A*B+~C 与 A*E+~F 不等价
现要求你编程解决下列问题:
任务 1 (文件名: 00301.pas 00301.exe )
读取一个逻辑表达式,判断这个表达式的合法性;
输入:

文件名: input.031
s s为一字符串(长度小于255)
输出:

文件名: output.031
yes或no 表达式合法时输出yes,不合法时输出no
输入输出 样例 :

输入:
(A+B)*(A-B)
输出:
no
任务 2 (文件名: 00302.pas 00302.exe )
将读入的表达式化简,化简的表达式为
a1*a2*…*aN+b1**b2*…*bM+…+x1*x2*…*xL
其中 ai、bj、…xk(i=1,2,…n; j=1,2,…m; k=1,2,…L)表示一个变量或一个变量的逻辑非;
输入:

文件名: input.032
s s为一合法的表达式字符串(长度小于255)
输出:

文件名: output.032
s s为化简的表达式字符串(长度小于255)
输入输出 样例 :

输入:
( A+B)*C
输出:
A*C+B*C
任务 3 (文件名: 00302.pas 00302.exe )
将任务 2中的化简的表达式化为最简形式。所谓最简有如下两个条件:
(1)表达式中的"+"号最少;
(2)满足(1)的条件下"*"号最少 。
输入:

文件名: input.033
s s为化简的表达式字符串(长度小于255)
输出:

文件名: output.033
s s为化为最简的表达式字符串(长度小于255)
输入输出样例 :

输入:
A*B*C+A*B*C
输出:
A*B*C

上一篇:

下一篇: