9512.net
甜梦文库
当前位置:首页 >> 学科竞赛 >>

信息学奥赛题库



一、 初级编程入门题
顺序结构
1、请编写一个程序,求一个正方的周长。 2、请编写一个程序,求一个长方形的周长。 3、请编写一个程序,求一个三角形的周长。 4、请编写一个程序,从键盘输入两个整数,要求求和然后输出和。 例如: 输入 1 4 输出 5 5、要求从键盘输入一个三位数,要求百位变十位,十位变个位,个位变百位: 例如: 输入 123 输出 312 6、

输入一个四位数要求按如下交换输出: 例如 :输入 1234 输出 4321 7、输入一个四位数要求输入各位数字的和。 例如: 输入 4567 输出 22 8、编一程序,键盘输入整数 A,B 的值,然后打印 A 除以 B 的商的整数部分及余 数。 9、输入一个时、分、秒,把它转换为一个秒数。 例如 输入 2 3 4 代表 2 小时 3 分钟 4 秒 输出 7384 代表一共有 7384 秒 10、求三角形面积:给出三角形的三个边长为 a,b,c,求三角形的面积。 提示:根据海伦公式来计算三角形的面积: a?b?c 2 S= ;Area= S( S ? a )( S ? b )( S ? c ) 11、编一程序,从键盘输入整数 A,B 的值,然后把 A,B 的值交换后输出。从键 盘输入两个整数,打印出更小的那个数。 12、设 X,Y,Z 的值分别是 FALSE,TRUE,FLASE。写出下列逻辑表达式的值: not x and not y; true and x or y; (x and z) or (z and y); x or z and y; (4>5) and (7<8) (8>9) or ( 9<10) 2 and ((3=3) or (3<7))

选择结构
13、读入三个整数,从小到大输出。 14、从键盘输入一个数,判断它的奇偶性,如果是奇数则输出 yes,否则输出 no。 15、从键盘读入一个数,判断它的正负。是正数,则输出"+",是负数,则输出 "-"。 16、从键盘输入一个数,如果是两位数那么输入 yes 否则输入 no。 17、输入两个数 a,b,输出较大数的平方值。 18、 铁路托运行李规定: 行李重不超过 50 公斤的, 托运费按每公斤 0.15 元计费; 如超 50 公斤,超过部分每公斤加收 0.10 元。编一程序完成自动计费工作。 19、某超市为了促销,规定:购物不足 60 元的按原价付款,超过 60 不足 200 的按九折付款,超过 200 元的,超过部分按八折付款。编一程序完成超市的自动 计费的工作。 20、打印某年某月有多少天。 (提示:A、闰年的计算方法:年数能被 4 整除,并 且不能被 100 整除;或者能被 400 整除的整数年份。B、利用 MOD 运算可以判断 一个数能否被另一个数整除)。 21、编写一个程序,功能是从键盘输入一个整数,判断它是否二位数,如果是, 就打印它,然后结束程序, 22、编写一个程序,功能是从键盘输入三个整数,打印出其中最大的一个值。 23、当前小学生的成绩单由以前的百分制改为优秀、良好、合格、不合格四个等 级的等级制。编一程序完成分数的自动转换工作。转换规则如下:60 分以下的 为不合格;60 到 69 分为合格;70 到 89 分为良好;90 分以上的为优秀。 (提示: 可以利用 DIV 运算来使程序更简明)

循环结构
分别用 repeat,while 循环做以下习题。 24、计算 1—1000 之间能同时被 3 和 5 整除的整数的和。 25、求所有的三位数中十位数能被个位数和百位数之和整除的数。 26、求水仙花数。所谓水仙花数,是指一个三位数 abc,如果满足 a^3+b^3+c^3=abc,则 abc 是水仙花数。 27、求所有满足条件的四位数: (1)这四位数是 11 的倍数; (2)b+c=a; 28、计算下列式子的值: 28a (1)1+3+……+99

28b

(2)1+2+4+8+…+1024

29、输入一个整数,计算它各位上数字的和。 (注意:是任意位的整数) 30、输入一整数 A,判断它是否质数。 (提示:若从 2 到 A 的平方根的范围内, 没有一个数能整除 A,则 A 是质数。 ) 用 for 循环做以下习题 31、1+3+5+…..+…..99=? 32、1+1/2+1/3+1/4+……1/100=? 33、1*2+2*3+3*4+……+n*(n+1)=? 34、1+1/2!+1/3!+…..1/n!=? 35 、 求 水 仙 花 数 。 所 谓 水 仙 花 数 , 是 指 一 个 三 位 数 abc , 如 果 满 足 a^3+b^3+c^3=abc,则 abc 是水仙花数。 36、输入一整数 A,判断它是否质数。 (提示:若从 2 到 A 的平方根的范围内, 没有一个数能整除 A,则 A 是质数。 ) 37、1+(1+3)+(1+3+5)+ ……(1+3+5+……+n)=?n 为奇数。 38、s=-1+3-5+7-9+……n n 为奇数。

二、综合练习题
39、计算下列式子的值: (1)1+2+……+1000 (2)1+3+5+……+97+99 1a 2a (3)1+2+4+8+…+1024 3a

40、输入一个四位数,求它各位上数字的和。 41、求所有的三位数中十位数能被个位数和百位数之和整除的数。 42、求水仙花数。所谓水仙花数,是指一个三位数 abc,如果满足 a^3+b^3+c^3=abc,则 abc 是水仙花数。 43、 求所有满足条件的四位数: (1)这四位数是 11 的倍数; (2)b+c=a; 44、输入一个整数,计算它各位上数字的和。 (注意:是任意位的整数) 45、输入一整数 A,判断它是否质数。 (提示:若从 2 到 A 的平方根的范围内, 没有一个数能整除 A,则 A 是质数。 ) 46、求两个数的最小公倍数和最大公约数。 (提示:公约数一定小于等于两数中 的小数,且能整除两数中的大数。公倍数一定大于等于两数中的大数,且是大数 的倍数,又能给两数中的小数整除。 ) 47、编写一个译码程序,把一个英语句子译成数字代码。译码规则是以数字 1 代替字母 A,数字 2 代替字母 B,……,26 代替字母 Z,如遇空格则打印一个星 号?*‘,英文句子以?.?结束。 48、―百钱买百鸡‖是我国古代的著名数学题。题目这样描述:3 文钱可以买 1 只 公鸡,2 文钱可以买一只母鸡,1 文钱可以买 3 只小鸡。用 100 文钱买 100 只鸡, 那么各有公鸡、母鸡、小鸡多少只?与之相似,有"鸡兔同笼"问题。 49、输入一个正整数 N,把它分解成质因子相乘的形式。 如:36=1 X 2 X 2 X 3 X 3; 19=1 X 19 50、判断一字符串是否是回文数,如 121、12321、ABA 等(字符串输入时以‘.’ 结束)。 如输入:12321. 输出:yes 51、打印下列图案: (输入 N 值来控制图案的规模,下列图案均以 N=3 为例)

& & & & & & 51a

& & & & & & & & & 51b

* * * * * * * * * 51c

# # #

@ @ @

* * *

# # # @ @ @ * * * 51d

52、计算 1—1000 之间能同时被 3 和 5 整除的整数的和。 53、打印下列图形: 1 121 12321 1234321 12321 121 1 54、一百匹马驮一百块瓦,一匹大马可以驮 3 块,一匹母马可驮 2 块,小马 2 匹可驮 1 块。试编程求需要各种马多少匹? 55、有三种纪念邮票,第一种每套一张售价 2 元,第二种每套一张售价 4 元,第 三种每套 9 张售价 2 元。 现用 100 元买了 100 张邮票,问这三种邮票各买几张? 56、赵、钱、孙、李、周五人围着一张圆桌吃饭。饭后,周回忆说: ?吃饭时, 赵坐在钱旁边,钱的左边是孙或李? ;李回忆说: ?钱坐在孙左边,我挨着孙坐? 。 结果他们一句也没有说对。请问,他们在怎样坐的? 57、找数。一个三位数,各位数字互不相同,十位数字比个位、百位数字之和还 要大,且十位、百位数字之和不是质数。编程找出所有符合条件的三位数。 注:1. 不能手算后直接打印结果。 2. ―质数?即?素数? ,是指除 1 和自身外,再没有其它因数的大于 1 的自然数。 58、选人。一个小组共五人,分别为 A、B、C、D、E。现有一项任务,要他们中 的 3 个人去完成。已知: (1)A、C 不能都去; (2)B、C 不能都不去; (3)如果 C 去了,D、E 就只能去一个,且必须去一个; (4)B、C、D 不能都去; (5)如果 B 去了,D、E 就不能都去。编程找出此项任务该由哪三人去完成的所有组合。 59、输入一个字符串,内有数字和非数字字符。如 A123X456Y7A,302ATB567BC, 打印字符串中所有连续(指不含非数字字符)的数字所组成的整数,并统计共有 多少个整数。

60、甲、乙、丙、丁四人共有糖若干块,甲先拿出一些糖分给另外三人,使他们 三人的糖数加倍;乙拿出一些糖分给另外三人,也使他们三人的糖数加倍;丙、 丁也照此办理,此时甲、乙、丙、丁四人各有 16 块,编程求出四个人开始各有 糖多少块。 61、截数问题: 任意一个自然数,我们可以将其平均截取成三个自然数。例如自 然数 135768, 可以截取成 13,57,68 三个自然数。 如果某自然数不能平均截取(位 数不能被 3 整除),可将该自然数高位补零后截取。现编程从键盘上输入一个自 然数 N(N 的位数<12),计算截取后第一个数加第三个数减第二个数的结果。 62、从键盘输入一段英文,将其中的英文单词分离出来:已知单词之间的分隔符 包括空格、 问号、句号(小数点)和分号。 例如:输入:There are apples; oranges and peaches on the table. 输出:there are apples oranges and peaches on the table 63、A,B,C,D,E 五个人合伙夜间捕鱼,凌晨时都疲惫不堪,各自在河边的树 丛中找地 方睡着了,日上三竿,E 第一个醒来,他将鱼数了数,平分成五分, 把多余的一条扔进河中, 拿走一份回家去了,D 第二个醒来,他并不知道有人 已经走了,照样将鱼平分成五分, 又扔 掉多余的一条, 拿走自己的一份, 接着 C, B,A 依次醒来,也都按同样的办法分鱼(平分成 五份,扔掉多余的一条,拿走 自己的一份),问五人至少合伙捕到多少条鱼。 也许你能用数学办法推出鱼的条数,但我们的要求你编出一个程序,让计算机 帮你算出鱼的总数。 64、试编程找出能被各位数字之和整除的一切两位数。 65、一个正整数的个位数字是 6,如果把个位数字移到首位,所得到的数是原数 的 4 倍,试编程找出满足条件的最小正整数。 66、某本书的页码从 1 开始,小明算了算,总共出现了 202 个数 1,试编程求这 本书一共有多少页? 67、 从键盘上输入两个不超过 32767 的整数,试编程序用竖式加法形式显示计算 结果。

例如: 输入 123, 85 显示: 123 + 85 --------208 68、有 30 个男人女人和小孩同在一家饭馆进餐,共花了五十先令,其中男宾 3 先令,女宾 2 先令,小孩 1 先令。试编程求出男人女人小孩各多少人? 69、找出 100 到 999 之间的整数中所有等于它每位数字立方和的数 70、求所有满足条件的四位数: (1)这四位数是 11 的倍数; (2)a,b,c,d 均是小 于 10 的互不相等的自然数; (3)b+c=a; (4)bc 是完全平方数. 71、已知四位数 3025 有一个特殊性质: 它的前两位数字 30 和后两位数字 25 的 和是 55, 而 55 的平方刚好等于该数(55*55=3025). 试编一程序打印所有具有 这种性质的四位数. 72、编程找出四个互不相等的自然数, 它们之中任意两数之和为偶数, 任意三 数之和可以被 3 整除, 而且这四个数的和越小越好(已知它们的和不大于 50). 73、以不同的字母代表 0--9 之间的数字, 现有如下等式成立: a+bc+def=ghij, 编程求出满足上述条件等式的个数并将所有等式打印输出. 74、下面的竖式表示, 图中的"*"号只能用素数 2,3,5,7 代替, 因此称为素数乘 法竖式. * * * 〓 * * --------------* * * * * * * * ---------------* * * * * 编程找出此乘法竖式的所有可能方案. 75、出售金鱼: 出售金鱼者决定将缸里的金鱼分五次全部卖出: 第一次卖出全部金鱼的一半加二分之一条; 第二次卖出剩余金鱼的三分之一加三分之一条; 第三次卖出剩余金鱼的四分之一加四分之一条; 第四次卖出剩余金鱼的五分之一加五分之一条; 现在还剩下 11 条金鱼一次卖出. 问缸里原来有多少条金鱼.

76、 一个四位数是一个完全平方数,减去一个每位数字都相同的四位数( 如 1111, 5555)后, 仍是一个完全平方数. 请编程打印出所有这样的四位数. 77、 将 1,2,3,4,5,6,7,8,9 这九个数字组成三个三位数, 使每个数都是完全平方 数. 78、如果一个数从左边读和从右边读都是同一个数, 就称为回文数. 例如: 6886 就是一个回文数. 编程找出所有既是回文数又是素数的三位数. 79、有一个八位数 12345679, 若它乘以 9, 则得九位数 111111111, 试求:素数 (1)当这个数乘以什么数时, 才能得到全部由 5 所组成的九位数? (2)当这个数乘以什么数时, 才能得到全部由 9 所组成的九位数? 80、 李先生和他的孙子同出生于 20 世纪, 他的孙子与他的年龄之差为 60 岁, 李 先生和他的孙子出生年份被 3,4,5,6 除, 余数分别为 1,2,3,4. 编程求出李先生 和他的孙子各出生在哪一年. 81、一位妇女在河边洗碗. 邻居问:"家里来了多少个客人?", 她回答:" 每两个 客人合用一个菜碗, 每三个客人合用一个汤碗, 每四个客人合用一个饭碗, 共 用碗 65 个". 问共来了多少客人? 82、16/64 是一个分子和分母都是两位数的真分数, 且分子的个位数与分母的十 位数相同. 非常奇怪的是: 如果把该分数的分子的个位数和分母的十位数同时 划去, 所得到的结果正好等于原分数约分后的结果 . 例 16/64=1/4. 编程找出 所有满足上述条件的真分数. 83、公鸡每只值 5 文钱, 母鸡每只值 3 文钱, 小鸡 3 只值 1 文钱. 今用 100 文 钱买鸡共 100 只, 问公鸡, 母鸡, 小鸡各儿只. 84、甲去买东西, 要付给乙 19 元, 而甲只有 3 元一张的钱, 乙只有 5 元一张的 钱. 请为他们设计一个交换方案. 85、一米店有三箩米被盗去一部分, 其中左箩剩 1 合, 中箩剩 14 合, 右箩剩 1 合. 小偷甲说他用一马勺在左箩舀米, 每次舀满, 装到布袋. 小偷乙说他用一 只木鞋在中箩偷. 小偷丙说他用一只漆碗在右箩中偷 . 作案物经标定: 马勺一 次舀 19 合, 木鞋一次舀 17 合, 漆碗一次舀 12 合. 问米店被偷走多少米? 甲乙 丙各偷多少米? 86、五户人家共用一口井, 如果用 A 家的绳 2 条, B 家的绳 1 条接长, 正好抵达 水面; 又用 B 家绳 3 条, C 家绳 1 条; 或用 C 家绳 4 条, D 家绳 1 条; 或用 D 家绳 5 条, E 家绳 1 条; 或用 E 家绳 6 条, A 家绳 1 条接长, 也都一样正好抵达 水面, 问井深和各家的绳子各长多少?( 不超过 999 的整数解). 87、有六箱货物,重分别是 5 吨、2 吨、3.5 吨、1.7 吨、1 吨、5.1 吨。现有一 台货车,载重量 10 吨。设计一个程序,使这次车运走的货物最多。

88、某电台组织一次智力竞赛,计划安排奖励 30 人。准备了 50 件奖品。得一等 奖者可得 3 件,二等奖 2 件,三等奖 1 件。希望把所有奖品都发到获奖者手中。 请找出所有方案(即各等奖各有多少人) 。 89、从键盘输入二个整数 a, b(b<>0), 若 a 能被 b 整除, 就打印"YES", 否则打 印"NO"。 90、从键盘输入一个整数, 如果是奇数就直接打印, 否则反复除以 2, 直到商为 奇数为止, 打印这个奇数商。 91、 从键盘输入一个小于 1000 的正整数, 若此数的各位数字之和能被 7 整除, 则 打印, 否则不打印。 92、求 100 以内的所有素数。 93、输入一个大于 1 的自然数, 打印出它的质因数分解式. 如输入 75 则打印: 75=3*5*5. 94、 某自然数 N(1<N<100)的所有素因数的平方和等于 N, 请找出两个这样的自然 数。 95 求 1992 个 1992 相乘结果的最后三位数。 96 从键盘输入两个自然数, 求它们的最大公约数和最小公倍数。 97、 一个自然数是素数, 且它的数字位置经过任意对换后仍为素数, 称为绝对素 数. 例如 13. 试找出所有这样的四位绝对素数。 98、编程验证对任意自然数 N, 如果各位数字平方和不是 1, 则求平方和的各位 数字的平方和, 最后必有 145, 42, 20, 4, 16, 37, 58, 89 之无穷循环。 99、五位数 4H97H 能被 3 整除, 且它的最低二位数字所组成的数 7H 能被 6 整 除, 求这个五位数字。 100、 975*935*972*( 0, 求出最小值。 ), 在( )中填什么自然数使四个数的乘积末四位全为

101、修改 31743 的某一位上的数字, 使之成为 823 的倍数。 102、一个自然数, 若它的质因数至少是两重的(相同的质因数至少个数为二个, 如 36=2*2*3*3)则称该数为"漂亮数". 若相邻两个自然数都是"漂亮数", 就称 它们为"孪生漂亮数". 例如 8 与 9 就是一对. 请编程再找出一对"孪生漂亮数"。

103、任意输入二个自然数, 若商为整数, 则直接显示商; 否则把商分解成一个 自然数和一个正的既约真分数之和才显示。 例如: 输入: 9, 3 显示: 9/3=3 输入: 8, 6 显示: 8/6=1+1/3 104、任意输入四个自然数 a,b,c,d, 看成二个分数 a/b, c/d. 求这二个分数之 和. 和的显示格式为: 输入 3,2,1,6 输出: 3/2+1/6=1+2/3。 105、 在自然数中, 各位数字之和的 11 倍正好等于自身的自然数只有一个. 请找 出这个自然数。 106、求所有不超过 1000 的这样的整数, 它的平方的末二位数字相同但不为 0。 107、P 是一个大于 3 的质数, 对某个自然数 N, PN 恰好是五位数, 个位上的数字相同, 求 P 至少是多少。 且至少有三

108、编程求最小正整数 M,N(0<N<M)为何值时, 1989m 与 1989n 的最后三位数字 相同。 109、验证下面结论: 一个各位数字不同且都不为 0 的 N 位数 X(3<=N<=5), 将组 成该数的各位数字重新排列成一个最大数和一个最小数作减法, 其差值再重复 前述运算, 若干次后必出现一个 N 位数 Y, 使之重复出现. 例如: X=213, 则有 213→321-123=198 981-189=892 982-289=693 963-369=594 954-459=495 954-459=495 这时 Y=954.
1? 1 1 1 1 ? ? ? ......? 1 1* 2 1* 2 * 3 1* 2 * 3 * ...* 20

110、计算:

111、小明的妈妈是负责分发全厂工资的。为使分发时有足够多的零钞,同时又 尽量不使每个人领到的钱太零碎。 每个月她都要计算出各种面值的钞票 (100 元、 50 元、10 元、5 元、2 元、1 元,假设每个人的工资都是整数元)各需要多少张。 你能否为她设计一个程序,从键盘输入 10 个人的工资,再计算出各种面值的钞 票各需要多少张? 112、任给一个自然数 n,求出这个自然数不同因数的个数 M. 113、给出一个数 n 的不同因数个数 m,求最小满足要求的自然数 n,即 n 有 m 个不同的因数。

例如输入

2

则输出

2 因为 2 有 2 个因数。

114、m,n 为自然数,其上限为 k,试编写程序,由键盘输入自然数 k 找出满足 条件: (n^2-mn-m^2)^2=1 且使 m^2+n^2 达到最大的 m,n。 115、求 50 到 100 中所有奇数。 116、 商店卖水果, 10 斤以下 8 元每斤, 100 斤以下打 9.5 折, 即 8*0.95 元每斤, 100 斤以上含 100 斤打 9 折。输入购买水果的斤数,输出应付钱数,保留两位小 数。 117、从键盘输入 10 个数,求出其中的最小数。 118、输出能被 11 整除且不含重复数字的三位数。并统计个数。 119、已知一个四位数为 ABCD,若 A+C 和 B+D 的值相等,则称这个四位数为交叉 数,求四位数的交叉数和个数。 120、输入一个字符串,将其中所有的‘god‘改为‘good‘。 121、输入两个正整数 a,b(1<=a<=b<=1000) ,输出它们的最大公约数和最小公 倍数。如:输入 4 6,输出 2 12。 122、从键盘随意输入 10 个整数,输出第 5 大数。 123、有一根长为 514CM 的钢筋,现在要截成 23CM、15CM 和 19CM 的短料,问在 各至少截一根的前提下,问各截多少根,使所剩余料最少。 124、统计 100 以内素数的个数。 125 、 给 出 一 个 正 整 数 , 求 出 它 的 因 子 , 并 按 下 面 的 格 式 打 印 出 来 : 15=3*5,20=2*2*5,28=2*2*7 126、N 的阶乘之和是 1!+2!+…+n!, n 小于 100。 127、求 1 到 100 中所有奇数。 128、求 1 到 200 中所有能被 2、3、7 整除的数。 129、输入一个学生的语文成绩 0 分到 100 分,如果是 85 分到 100 是优秀,输出 ?BEST? ,如果是 60 分到 84 是及格, 输出 ?GOOD? ,如果是 0 分到 59 是不及格, 输出?BAD? 。

130、输入 10 个学生的语文成绩,分别统计成绩在 85~100 分,60~85 分和 60 分以下,各分数段中的人数。 131、筐中有鸡蛋是 7 的倍数,二个二个一为,三个三个一数,四个四个一数, 五个五个一烽均余 1,求满足此条件的最小蛋数。 132、计算 N!,其中 N 由键盘输入。 133、求 1 至 200 的和。 134、读入十个数,计算它们的和与积以及平均值。 135、任意输入一个三位数,反过来输出。 136、水仙花数是一个三位数,并且它的各数码的立方和正好等于它本身。如: 153=1〓1〓1+5〓5〓5+3〓3〓3。 137、求能被 11 整除,且数码的平方和是 122 的所有的三位数。 138、求能被 11 整除,且不含重复数字的三位数?有多少个。 139、求 2~1000 中的完数, (因子和等于它本身的数为完数。例如 28 的因子是 1,2,4,7,14,且 1+2+4+7+14=28,则 28 是完数) 。 140、找 2~1000 中的亲密数对(如果 A 的因子和等于 B,B 的因子和等于 A,且 A 不等于 B,则称 A,B 为亲密数对) 。 141、从键盘输入三个数,输出其中的最大数。 142、从键盘输入 20 个数,求出其中的最小数。 143、用循环语句从小到大依次输出 26 个大写字母,再返向输出。 144、输入两个运算量及一运算符,输出运算结果。这相当于计算器计算。

145、非波拉契数列如下:0,1,1,2,3,5,8,13,21…从第三项开始,每一项等于前 两项的和。编程求前 20 项。 146、有一个三位数,三个数字和为 20,第三个数 3 倍与第二个数的 2 倍及第一 个数三者之和为 44,第一个数与第二个数和的 2 倍减去第三个烽的 4 倍为-14, 求这个三位数。 147、父子二人,已知儿子年龄不大于 40 岁,父亲年龄不大于 100 岁,10 年前 父亲的年龄是儿子年龄的 4 倍,10 年后父亲的年龄是儿子年龄的整数倍。问父 子现年多少岁。 148、 前 N 个自然数排成一串: X1,X2,X3.....Xn 先取出 x1,将 x2,x3 移到数串尾, 再取出 x4,将 x5,x6 移到数串尾,....... 类推直至取完.取出的序列恰好 是:1,2,3......n 要求输入 N,求原来的数串的排列方式. 149、有 M 个猴子围成一圈,每个有一个编号,编号从 1 到 M。打算从中选出一 个大王。经过协商,决定选大王的规则如下:从第一个开始,每隔 N 个,数到的 猴子出圈,最后剩下来的就是大王。要求:从键盘输入 M,N,编程计算哪一个 编号的猴子成为大王。 150、 围绕着山顶有10个洞, 狐狸要吃兔子, 兔子说: ?可以, 但必须找到我, 我 就藏身于这十个洞中,你从10号洞出发,先到1号洞找,第二次隔1个洞找, 第三次隔2个洞找,以后如此类推,次数不限。‖但狐狸从早到晚进进出出了1 000次,仍没有找到兔子。问兔子究竟藏在哪个洞里? 151、输入一个二进制小数,无需判错,请转换成十进制输出。并保留四位小数 位。 输入样例:0.11 输出样例:0.7500

152、纯粹素数是这样定义的:一个素数,去掉最高位,剩下的数仍为素数,再 去掉剩下的数的最高位, 余下的数还是素数。这样下去一直到最后剩下的个位数 也还是素数。求出所有小于 3000 的四位纯粹素数。

153、 求 n 个最小的连续合数。 合数是除了 1 和本身以外还有其它因子的正整数。 输入样例:3 输出样例: 8 9 10

154、从键盘输入一个正整数,是偶数输出?yes? ,否则输出?no? 。 155、从键盘输入一个正整数 N(1<=N<=30000) ,求 1 到 N 的和。 156、 输入一个正整数 N (1<=N<=200) , 如果是素数则输出 ?TRUE? , 否则输出 ?FALSE 157、输入两个正整数 a,b(1<=a<=b<=1000) ,输出它们的最大公约数和最小公 倍数。如:输入 4 6,输出 2 12。 158、大家熟知鸡兔同笼问题,输入两个数 a,b,a 为脚的只数,b 为头的个数。 编程序输出鸡的只数和兔的只数。 159、将 1~9 这 9 个数字分成三组(每个数字只能使用一次) ,分别组成 3 个三 位数,且这三位数的值构成 1:2:3 的比例,试求出所有满足条件的 3 个三位数。 160、编写程序,任意输入一个三位正整数,然后倒序输出。比如输入的是 285 , 输出的就该是 582。 161、请看图 3-2,判断任意一点 A(x,y)是否在圆环 内。如果在圆环内输出 True,否则输出 False。使用输 入语句获取 X,Y 的值。提示:首先推导出判别式为 2<=x2+y2<=25
O

Y

x

162、编写程序输入一个任意的正实型数,输出它的平 方及平方根,立方及立方根。 提示:求立方根公式为 x1/3=e1/3lnx

(x,y)

163、某服装店对售货员发放奖金的办法是:日营业额在 1000 元以下的,只能拿 到基本工资,没有奖金;超过 1000 元的,奖金为超出部分的 2%。编写程序输 入营业额,计算并输出奖金。 164、编写程序计算 y 的值。 Sqrt(a+b)+sin(a-b) a>0,b>0 Y= 1 a=0,b=0 a2+b2 其他 165、从键盘输入三个整数,输出最大数 max 和最小数 min。

166、输入年号、月份,输出该月的天数。 1、3、5、7、8、10、12 月为 31 天,4、6、9、11 月为 30 天,2 月平年 28 天,润年 29 天。润年判别式为: (y mod 4=0) and (y mod 100<>0) or (y mod 400=0) 167、模拟一个有加、减、乘除运算的简单计算器。当输入一个实型数,再输入 一个运算符,再输入一个实型 数后马上输出运算结果。比如:输入 3.5*4.0 后 程序运行结果应该是 14.0。 168、求 n! (即 1*2*..*n) ,n 由键盘输入。分别用 for 和 while 两种循环实现。 169、求 1-1/2+1/3-1/4…+1/99-1/100 的值。 170、求圆周率π≈1-1/3+1/5-1/7+…+(-1)n-11/(2n-1),求π的近似值,真到 某项的绝对值小于 10-6 为止。 177、利用双重循环编写出打印出右边数字方阵的程序。 1 2 3 4 5 6 2 3 4 5 6 7 3 4 5 6 7 8 5 6 7 8 9 10 6 7 8 9 10 11 178、求 e 的近似值:e≈1+1/1!+1/2!+1/3!+…+1/n!,当某项小于 10-5 时停止。 179、编写程序,打印出 100~200 之内的全部素数。 180、给出一个正整数,求出它的因子,并按下面的格式打印出来: 15=3*5,20=2*2*5,28=2*2*7 181、找出 1~1000 之间的全部?水仙花数? 。 ?水仙花数?是这样一个整数,它的 每一位数字的立方之和正好等于这个三位数,例如 153 是?水仙花数? ,因为 13+53+33=153。 182、找出 1~100 之间的全部?同构数? 。 ?同构数?是这样一种数:它出现在它 的平方数的右端。例如:5 的平方是 25,5 就是同构数,25 也是构数。 183、猴子分苹果》趣味程序设计:傍晚,五只猴子在树林里发现一堆苹果,约 定第二天早上再来平分,于是各自回去睡觉。半夜一只猴子醒来,把苹果平分了 五分,发现多出一个苹果。给谁都不合适,又不能扔掉,只好自己吃了,然后它 把其中一堆藏了起来, 剩下的四堆又混在一起, 高高兴兴地睡觉去了。 过了一会, 又有一只猴子醒来,它和第一只猴子一样,把苹果平分了五份,发现多出一个苹 果,给谁都不合适,又不能扔掉,只好自己吃了,然后它把其中一堆藏了起来, 剩下的四堆又混在一起,也去睡觉了。这一夜五只谗嘴的猴子都没睡塌实,五只

猴子都以同样的办法把苹果分一次。第二天早上,五只猴子起来看着变少了的苹 果各自心照不宣,它们一起把苹果分了五份,正好一个不多一个不少。请编写程 序计算出一开始总共有多少苹果。 184、编程打印出三角形九九乘法表。 185、编写程序打印右图。 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 2 3 4 5 4 3 3 4 5 6 5 4

1 186、编程打印出右图

1 2

1 2 3

1 2

1

1 2 3 4 5 7 8 11 12 187、按下述格式输出杨辉三角形: 1 1 1 1 1 4 3 6 2 3 4 1 1

6 9 10 13 14 15

1 1

188、已知某班学生 6 人,输入他们的语文、数学、英语三门课程考试成绩,求 出每个学生的平均成绩,并排名次。 189、解数学灯迷,有以下算式: A B C D - C D C -------------A B C A,B,C,D 均为一位非负整数,要求找出 A,B,C,D 的值,请编程序。 190、任意输入两个正整数,求他的最大公约和最小公倍数。 191、已知三角形的三条边长为 a,b,c,求三角面积。 提 示 : 用 海 沦 公 式 求 三 角 形 面 积 s=sqrt(p*(p-a)*(p-b)*(p-c)) p=(a+b+c)/2

192、用筛法求 1 到 10000 的素数。 193、开灯问题。 有从 1 到 n 依次编号的 n 个人和 n 盏灯。我号人将所有的灯都关掉;2 号人 将编号为 2 的倍数的灯都打开;3 号人则将编号为 3 的倍数的灯作相反处理;以 后的人都将凡是自己编号的倍数的灯作相反处理。问第 n 个人操作后,哪些灯是 打开的? 194、12 个小朋友手拉手站成一个圆圈,从某一个小朋友开始报数,报到 7 的那 个小朋友退到圈外,然后他的下一位重新报?1? 。这样继续下去,最后只剩下一 个小朋友,他原来站在什么位置上呢? 195、2m ,3n |m>=1,n>=1}中由小到大排列的前 70 项数。 196、运动会连续开了 n 天,一共发了 m 枚奖章,第一天发1枚并剩下(m-1)枚的 1/7,第二天发2枚并剩下的 1/7,以后每天按此规律发奖章,在最后一天即第 n 天发了剩下的 n 枚奖章。问运动会开了多少天?一共发了几枚奖章? 197、设有如图所示的 3n+2 个球互连,将自然数 1-3n+2 分别为这些球编号, 使如图相连的球编号之差的绝对正好是数列 1,2,……,3n+2 中各数。
②─⑥ │ │ ①─⑧─④─⑤ │ │ ③─⑦ (n=2) ②─⑨─⑤ │ │ │ ①─⑾─④─⑧─⑦ │ │ │ ③─⑩─⑥ (n=3) ②─⑿─⑤─⑨ │ │ │ │ ①─⒁─④─⑾─⑦─⑧ │ │ │ │ ③─⒀─⑥─⑩ (n=4)

198、递归法判断所输入的一行字符是否回文。这里所说的回文是指输入的一行 字符, 以―-‖字符为中心,其两边的字符是左右对称的。例如: 输入:ABCDE-EDCBA ↓ 输出:It is symmetry. {输入一行字符是回文}

199、三个齿轮啮合。如图在齿轮箱里 三个齿轮互相衔接,某瞬间两对齿相遇,问各转 多少圈后,这两对齿同时重逢。如图示。 (说明:用 a,b,c 分别表示三个齿轮的齿数。 ) 200 、设有一个数组 A : array [0..N-1] of integer ; 存放的元素为 0 ~ N-1(1<N<=10)之间的整数,且 A[i]≠A[j](i≠j) 。例如当 N=6 时,有:A=(4, 3,0,5,1,2) 。此时,数组 A 的编码定义如下: A[0]编码为 0;

A[i]编码为:在 A[0],A[1],…,A[i-1]中比 A[i]的值小的个数 (i=1,2,…,N-1) ∴上面数组 A 的编码为:B=(0,0,0,3,1,2) 要求编程解决以下问题: (1)给出数组 A 后,求出其编码; (2)给出数组 A 的编码后,求出 A 中的原数据 程序样例: 例一: 输入:Stat=1 {表示要解决的第(1)问题} N=8 {输入8个数} A=1 0 3 2 5 6 7 4 输出:B=0 0 2 2 4 5 6 4 例二: 输入:Stat=2 {表示要解决的第(2)问题} N=7 B=0 1 0 0 4 5 6 输出:A=2 3 1 0 4 5 6 201、求 2 至 N(2≤N≤500)之间的素数。例如: 输入:N=100 输出: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 71 73 79 83 89 97 total=24 {表示 2 至 100 之间的素数有 24 个} 202、矩阵相乘:已知 N〓M1 矩阵 A 和 M1〓M 矩阵 B(1≤M、M1、N≤10) ,求矩 阵 C(=A〓B) 。例如: 输入:N,M1,M=4 3 4
A= 1 2 3 3 4 5 4 5 6 5 –1 –2 B= 1 6 4 2 2 3 4 1 –1 5 7 –3 输出:C= 2 27 33 –5 6 55 63 –5 8 69 78 –5 5 17 2 15 提示:所谓矩阵相乘(如 A〓B=C) ,是指 Cij= ∑(Aik〓Bkj)(i=1~N,j=1~M1,k=1~M) 例如: C11=A11〓B11+A12〓B21+A13〓B31 =1〓1+2〓2+3〓(– 1) =2 C42= A41〓B12+A42〓B22+A43〓B32 =5〓6+(–1)〓3+(–2)〓5 =17

203、输入 N(2≤N≤100)个数字(在 0 与 9 之间) ,然后统计出这组数中相邻 两数字组成的链环数字对出现的次数。例如: 输入:N=20 {表示要输入数的数目} 0 1 5 9 8 7 2 2 2 3 2 7 8 7 8 7 9 6 5 9
输出: (7,8)=2 (8,7)=3 {指(7,8) 、 (8,7)数字对出现次数分别为 2 次、3 次) (7,2)=1 (2,7)=1 (2,2)=2 (2,3)=1 (3,2)=1

204、生成一个按蛇形方式排列自然数 1,2,3,4,5,……,N2 的 (1<N≤10) 阶方阵。例如:
输入:N=4 输出: 1 2 6 7 3 4 5 9 8 12 13 14 10 11 15 16 N=7 1 2 6 7 15 16 28 3 5 8 14 17 27 29 4 9 13 18 26 30 39 10 12 19 25 31 38 40 11 20 24 32 37 41 46 21 23 33 36 42 45 47 22 34 35 43 44 48 49

三、算法设计题
筛选法 205、不相同的余数问题,即?秦王暗点兵?或?韩信点兵? : 206、有一楼房的楼梯级数很奇特,一步跨二级多一级,一步跨三级多二级,如 果分用四、五、六、七去除级数分别余三、三、五、五。问这楼房共有多少级阶 梯?(已知不超过 400 级) 。 207、狼追兔子,兔子躲进了 10 个环形分布的洞的某一个中。狼在第 1 个洞中没 有找到兔子, 就间隔 1 个洞, 到第 3 个洞中去找, 也没找到兔子, 就间隔 2 个洞, 到第 6 个洞中去找。以后狼每次多隔 1 个洞去找兔子,……。这样狼一直找不到 兔子。请问兔子可能躲在哪个洞中? 208、作 800—1000 的素数表。 答案:809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997 209、一位数学家和一些游客共 81 人不幸落入强盗手中,强盗把俘虏排成一队, 宣布每天处理所有第 2 的 N 次方个俘虏(N>=0) ,而只放走剩下的最后一个。由 于数学家身怀重任, 不得不选择了一个恰当的位置而最终被放走。请问他归初排 在第几个位置。 答案:80 210、有一堆礼物,工作人员无论是分成二个一份,还是三个、四个、五个、六 个一份,总是多一个。请问这堆礼物至少多少个? 答案:61 211、 一付扑克中拿出所有的黑桃 A……K 按顺序排好。第一次翻出第一张牌—— A,放在一边,再拿出第二张放到牌的最下面。以后每次都翻出一张牌,再把一 张牌放到最后,问第八次翻出的牌是哪一张? 答案:4 递归 212、有一个数列 N,已知:N(1)=1,N(X)=N(X-1)*3-1(X>1) ,求 N(100) ; 打印‘A’ 、 ‘B’ 、 ‘C’ 、 ‘D’ 、 ‘E’这五个字符任意排列的所有情况。 213、从键盘输入一个正整数 N,求把它分解成若干个小于等于 N 的正整数之和 的所有情况。 214、求 N! (阶乘) 。 215、梵塔问题:有三个塔柱(以 A,B,C 表示) 。在 A 上有一个干塔,共 N 层。 今以一个圆盘代表一层,在盘在下,小盘在上。要求将塔从 A 移动到 C。按规定, 每次只能移动一个盘子, 可以将盘子放在三个塔柱中任一个上,但大盘子不能放 在小盘子上面。试编程序打印出移塔过程。

216、验证卡布列克常数,对于一个四位数 N,进行下列运算: (1)将组成该四 位数的 4 个数字由大到小排列,形成由这 4 个数字组成的最大的四位数; (2)将 组成该四位数的 4 个数字由小到大排列, 形成由这 4 个数字组成的最小的四位数 (如果高位为 0 则取得的数不足 4 位) ; (3)求两个数的差,得到一个新的四位 数(高位 0 保留) ,称为对 N 进行了一次卡布列克运算。有这样的规律:对一个 各位数字不全相同的四位数重复进行若干次卡布列克运算, 最后得到的结果总是 6174。这个数被称为卡布列克常数。N 从键盘输入。输出每一次的卡布列克运算 及得到 6174 时的运算次数。 217、对任意自然数 N,将其拆分为若干个自然数之和。 218、有一楼梯共有 N 级,现在从第 1 级开始,每步可以走 1 级,也可以走 2 级、 3 级,问共有多少种走法并打印所有走法。 219、快速排序法:把数组中的 N 个数进行快速排序。N 及 N 个数从键盘输入。 220、楼梯有 N 级台阶,上楼可以一步上一级,也可以一步上两级,请编一递归 程序,打印出所有从第 1 级上到第 N 级的走法。提示:S(N)=S(N-1)+S(N-2) 。 m 221、编一递归程序,求组合数 Cn 。
m m m?1 已知: Cn ? Cn?1 ? Cn?1

222、一个凸 N 边形,通过 N 边形内部互不相交的对角线,把 N 边形拆分成若干 个三角形,不同拆分方案的数目用 H(N)表示。已知递归函数如下: H(N+1)=H(2)*H(N)+H(3)*H(N-1)+……+H(N)*H(2) , (为什么?) H(2)=1。请编写计算 H(N)的递归程序。 223、阿克曼函数(ACKMANN)A(X,Y)中,X、Y 定义域是非负整数,函数值定 义为: A(X,Y)=Y+1 (X=0) A(X,0)=A(X-1,1) (X>0,y=0) A(X,Y)=A(X-1,A(X,Y-1)) (X,Y>0) 设计一个递归程序,求 A(X,Y) 。 223、某人写了 N 封信和 N 个信封,结果所有的信都装错了信封。求共有多少种 情况。提示: D(N)=(N-1)*(D(N-1)+D(N-2) ) , D(1)=0,D(2)=1。为什么? 224、编写一个程序,生成 1,2,3,4,5 五个数字的全排列。 225、编写一个程序,生成 1,2,3,4,5,6 六个数字中任选出四个数字的全排 列。 回溯法 226、八皇后问题:在一个 8X8 的国际象棋棋盘上放置 8 个皇后,使它们不能互

相攻击(即任意两个皇后不能在同一行、同一列或同一对角线上) 。试求出所有 方法。 227、分派整数 1、2、3……8 给以下各方框,并保证没有两个相邻的方框(垂直 相邻,斜对角相邻或水平相邻)含有连续的整数。写一个程序,找出所有的分派 方案。

228、在一个 NXN 的方格网上从某一点(I,J)开始,沿水平、垂直或对角线向 前进,最后回到(I,J) ,形成一个不相交的封闭的折线,设此封闭折线不与方 格网的边界相交, 求此封闭折线所围成的面积。面积的计算方法是统计折线上以 及它所围成的封闭区域中的水平线与垂直线交点的数目。如图中围住了 41 个点 (包括折线本身上的点) ,因而面积为 41。 输入格式:文件读入,格式如下(定义走法:U 向上,D 向下,L 向左,R 向 右,UL、UR、DL、DR 依次累推) : 5 2 表示起点为(5,2) R 2 表示向右走三点 DR 2 表示向下右走三点 D 3 表示向下走四点 L 1 表示向左走一点 D 2 表示向下走二点

229、有一个由 N 个数组成的序列,有 0,1 两种数,要求在任一个数前 1 的个数 不得超过 0 的个数,求出所有这样的序列。 以下列方式向 5X5 矩阵中填入数字。设数字 I(1<=I<=25) 已被置于座标位置 (X,Y) ,则数字 I+1 的座标位置应为(E,W) , (E,W)可根据以下关系由(X,Y) 算出: (1) (E,W)=(X〒3,Y) ; (2) (E,W)=(X,Y〒3) ; (3) (E,W)=(X〒2,Y〒2) 。 编写一个程序,当数字 1 被指定于某个起始位置时,列举出其它 24 个数字 应在的位置;列举出该条件下的所有可能方案,输出所有可能的情况。

230、编一程序,从键盘输入数字 R,计算机自动检查在下列算式的? () ?中能 否填上?+?或?-?号凑成相应的等式。如能凑成,则打印出这些算式。如不能 则打印?NO ANSWER? 。 1( )2( )3( )4( )5( )6( )7( )8( )9=R 231、有 NXM 张邮票边在一起,但其中某一张被挖掉了。如下图就 5X4 的邮票的 形状和编号,其中第 11 张被挖掉了,现在要求从这些邮票中撕出 4 张连在一起 的邮票,请打印出所有答案。 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 输入格式: 5 4 表示 5 行 4 列 3 3 表示第 3 行第 3 列的邮票被撕掉了,如果输入 0 0 则表示没有撕掉 邮票。 输出格式 1-2-3-4 以下若干行为各种方案 1-5-9-13 5-9-13-17 1-5-6-7 1-6-7-10 ……

四、编程提高题
232、给出一个自然数 N(1<=N<=15,且 N 为奇数) ,要求找出这样的 N 个连续的 正整数,使得前(N+1)/2 个正整数的平方和,等于后(N-1)/2 个正整数的平方 和。 例如:当 N=5 时 满足条件的 5 个正整数为:10,11,12,13,14 且 102+112+122=132+142 输入:N 输出:满足条件的N个正整数 234、给出一个正整数 N(N<=32767),要求将其分解成质因子的连乘积。 例如:当 N=24 时 结果为:24=2*2*2*3(A) 又如;当 N=13 时 输出结果为:13=13 (B) 输入:N 输出:如(A)或(B)格式的结果 235、输入 N 和一组整数(以 0 结束) ,N 表示编号 1,2,…,N 的箱子,一组整 数表示零件的重量(单位为 G) 。现要求将一批零件,分别装入编号为 1,2,…, N 的 N 只箱子中去,装入的方法是: 0G< 零件重量<100G 装入 1 号箱 100G<=零件重量<150G 装入 2 号箱 150G<=零件重量<200G 装入 3 号箱 …… …… 以此类推。装完之后,要求找出哪只箱子中的零件个数最多,若有相同的最 多则要求全部列出(仅列出箱子的号数即可) ,若因零件太重无箱子可装,也应 输出这类零件的个数。 236、编制一个乘法运算的程序从键盘读入 2 个 100 以内的正整数,进行乘法计 算并输出。 例如:输入格式:89 ,13 又如:
输出格式: 89 × 13 267 890 1157 输入格式:16, 8 输出格式: 16 × 8 128

237、输入三个自然数 N,I,J(1<=I<=N,1<=J<=N) 。N 表示有一个 N 行 N 列的棋 盘格子, (I,J)表示棋盘中格子的位置。如:N-4,I-2,J-3 表示了棋盘中的 第二行第三列的格子。 如下图:

第一列

第二列

第三列 (2,3)

第四列
第1行 第二行 第三行 第四行

要求编制一个程序,根据输入的 N,I,J 的值,输出与格子(I,J)在同一 行、同一列、同一对角线上的所有各自位置。 例如:当 N=4,I=2,J=3 时,输出的结果是: (2,1) (2,2) (2,3) (2,4) {同一行上格子的位置} (1,3) (2,3) (3,3) (4,3) {同一列上格子的位置} (1,2) (2,3) (3,4) {左上到右下对角线上的格子位置} (4,1) (3,2) (2,3) (1,4) {左下到右上对角线上的格子位置} 238、问题描述:给出一个正整数 N(1≤N≤100) ,即可得到一个由 N 个正整数 组成的从 1 开始的如下数列:1,2,3,4,……N-2,N-1,N,且可求出从 1 开始 的这 N 个数的全部各个数位上的数字之和。 例如:当 N=12 时,这 12 个数是: 1,2,3,4,5,6,7,8,9,10,11,12。 则这 12 个数的数字之和为: S=1+2+3+4+5+6+7+8+9+1+0+1+1+1+2=51

239、问题描述: 输入两个真分数的分子与分母(分子与分母的值均不大于 3000) ,对这两个 分数进行加法计算。若符合条件,则应将计算的结果化为带分数。 例如: 输入 输出 2, 5 2,3 1+1/15(带分数的表达形式) 3,8 1,8 4/8 (不用约分) 240、问题描述: 键盘输入两个高精度的整数, 编程实现这两个高精度整数的减法运算,两数均不 会超过 240 位。要求输出该减法运算的算式与结果。 例如: 输入 输出 99998,9079 99998-9079=90919 123456,345678 123456-345678=-222222 241、求数组元素 问题描述:给出任意一个自然数 N(N≤100),输出满足下列条件的数组元素及 不同方案数,条件是: <1>数组元素由各不相同的自然数组成。 <2>数组元素的最后一个元素必为 n 。 <3>每一个数组元素都不小于它前面一个元素的平方( 第一个元素除 )。 <4>数组中包含的元素个数可不相同, 但至少要有一个元素。

例如: n=1 数组(1) k=1 (以 k 记录不同的方案数) 又如 n=5 数组(5) (1,5) (1,2,5) (2,5) k=4 输入:N(不用判错) 输出:一个整数(不同方案数) 242、所谓丑数,就是那些因子只含 2,3,5 的数。1,2,3,4,5,6,8,9,10,12,15 是 最前面的 11 个丑数。为方便起见,将 1 也看作是丑数。 请编写一个程序寻找并打印第 N 个(N<=3000)个丑数。 输入:N 输出:The N'th ugly number is <number> (其中 N 用输入数取代,<number>换为对就于 N 值所计算出的丑数) 输入样例: N=11 输出样例:The 11'th ugly number is 15. 243、找出 N 位自然数中(N<=8)具有下列性质的数:如果将这个数分为两部分, 且位数相等,然后将这两部分相加,所得和的平方,等于原来那个数。从键盘输 入 N,输出符合性质的数,各数间用空格分隔。 244、字母组合 问 题 描 述 : 字 母 A,B,C 的 所 有 可 能 的 组 合 ( 按 字 典 顺 序 排 序 ) 是 : A,AB,ABC,AC,B,BC,C 每个组合都对应一个字典顺序的序号,如下所示: 1 A 2 AB 3 ABC 4 AC 5 B 6 BC 7 C 任务 1:找出某个字母组合的字典序号。例如,AC 的字典序号是 4 任务 2:找出该字母组合下的第 N 个字母组合。例如 N=2,即 AC 的后 N 个字母组 合为 BC 输入:输入包括 3 行 第一行 N 表示字母组合由字母表中前 N 个字母组成 第二行 K 表示某一字母组合 第三行 M 表示要求输出前 N 个字母组成组合下的第个 M 字母组合

输出:输出包括 2 行 第一行 字母组合 K 的序号 第二行 第 M 个字母组合 输入样例:3 AB 6 输出样例:2 BC 245、字符串匹配问题 字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括 号有互相包含的形式,从内到外必须是 <>,(),[],{} ,例如。输入 : [()] 输 出:YES,而输入([]), ([])都应该输出 NO 输入:文件的第一行为一个整数 n,表示以下有多少个由括好组成的字符串。接 下来的 n 行, 每行都是一个由括号组成的长度不超过 255 的字符串。 (input.txt) 输出:在输出文件中有 N 行,每行都是 YES 或 NO。(output.txt) 246、寻找第 K 大数 一堆数有 N 个, 我想从大到小排成一排,从中挑出第 K 大的那个数进行采样分析 请你帮忙挑出来。 输入:输入文件的第一行为二个整数 N 和 K,表示整数的个数(N,K<=10000), 下面 N 行每行为一个整数,其值都在(-32768~32767)之间。(input.txt) 输出:输出文件只有一个数,为第 K 大整数(output.txt) 247、自然数的分解方案数 一个自然数可以写成若干个小于等于自己的自然之和,这叫该自然数的一个分 解。不同的分解是表示这个自然数分解成的所有自然数不完全相同。 例如:3=2+1 和 3=1+1+1 表示不同的分解。而 3=2+1 和 3=1+2 为相同的分解。 现在的任务是,给出一个自然数,要求所有不同的分解方案数。 输入:输入文件的只有一个自然数 N,N<=10000。(input.txt) 输出:输出文件只有一个数,为 N 的分解方案数。(output.txt) 248、 超级素数: 一个 n 位超级素数是指一个 n 位正整数, 它的前 1 位, 前 2 位, . . . , 前 n 位均为素数,例如,7331 是个 4 位超级素数,因为 7,73,733,7331 均为 素数。由键盘输入 n (n<9), 然后输出全部的 n 位超级素数。 249、问题描述:一个整数的整数字串是由该整数的连续数位的数字构成。程序 名为例如:6158 的子串包括 6,1,5,8,61,15,58,615,158,6158 任务:找出最大的质数子串 输入:整数 N(0<=N<=1000000000) 输出:N 的最大质数子串,若所有子串都是非质数,则输出?No primes? 输入样例 1: 2319 输出样例 1: 31 输入样例 2:6804

输出样例 2:No primes 250、找出 N 位自然数中(N<=8)具有下列性质的数:如果将这个数分为两部分, 且位数相等,然后将这两部分相加,所得和的平方,等于原来那个数。从键盘输 入 N,输出符合性质的数,各数间用空格分隔。 251、 我们知道,所谓的卡列列克运算,是指任意一个四位数,只要它们各个 位上的数不全相同,就有这样的规律:程序名为 step.pas 1. 把组成这个四位数的四个数字由大到小排列, 形成由这四个数字构成的 最大的四位数; 2. 把组成这个四位数的四个数字由小到大排列, 形成由这四个数字构成的 最小的四位数(如果四个数字中含有 0,则此数不足四位) ; 3. 求出以上两数之差,得到一个新的四位数。 重复以上过程,总能得到最后结果是 6174。 试编写一个程序, 实现卡布列克运算,要求以下面的格式输出全部运算过程和结 果,统计需要运算的步数(如下例为 3 步) 。 输出格式: n=5346 6543-3456=3087 8730-378=8352 8532-2358=6174 SETP=3 252、对于一个五位数 a1a2a3a4a5,可将其拆分为三个子数: sub1=a1a2a3 sub2=a2a3a4 sub3=a3a4a5 例如,五位数 20207 可以拆分成 sub1=202 sub2=020(=20) sub3=207 现在给定一个正整数 K,要求你编程求出 10000 到 30000 之间所有满足下述 条件的五位数,条件是这些五位数的三个子数 sub1,sub2,sub3 都可被 K 整除。 输入 输入由键盘输入,输入仅一行,为正整数 K(0<K<1000) 。 输出 输出到文件, 输出文件的每一行为一个满足条件的五位数,要求从小到大输 出。不得重复输出或遗漏。如果无解,则输出?No? 。 样例 num.in 15

num.out 22555 25555 28555 30000 253、溢出 over.pas 问题描述 写一个程序,读入两个非负整数及一个运算符号判断两整数及运算结果是否 超出了 PASCAL 语言中关于长整数类型的定义。 (长整数范围为-2147483648 到 2147483647) 输入文件 一行包含整数和运算符,运算符( ‘+’ , ‘-’ , ‘*’ , ‘div’ ) 输出文件 先输出一遍原输入,并在后面输出 0 到 3 行适当内容, 如:first number is too big
second number is too big result number is too big 例如: 输入 300+3 300000*300000 9999999999999999999+1

输出 300+3 300000*300000 result is too big 9999999999999999999+1 first number is too big result number is too big

建议用 int64 来处理,范围大小是
(-9223372036854775808 .. 9223372036854775807 )

254、请你编一程序实现两种不同进制之间的数据转换。 输入: 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制 n(2≤ n≤16),第二行是一个 n 进制数,若 n>10 则用大写字母 A~F 表示数码 10~15, 并且该 n 进制数对应的十进制的值不超过 1000000000,第三行也是一个正整数, 表示转换之后的数的进制 m(2≤m≤16)。 输出: 输出仅一行,包含一个正整数,表示转换之后的 m 进制数。 样例: change.in 16 FF 2 change.out 11111111

255、 阶乘问题 也许你早就知道阶乘的含义, N 阶乘是由 1 到 N 相乘而产生, 如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001,600 12 的阶乘最右边的非零位为 6。 写一个程序,计算 N(1<=N<=50,000,000)阶乘的最右边的非零位的值。 注意:10,000,000!有 2499999 个零。 输入 仅一行包含一个正整数 N。 输出 单独一行包含一个整数表示最右边的非零位的值。 样例 fact.in 12 fact.out 6 256、4 位数排列。 任给出 4 个非 0 的不同数字,求出由这 4 个数字组成的所有的 4 位数。 例如: 输入:3 2 1 6 输出:1 2 3 6
2136 3126 6123 1263 2163 3162 6132 1326 2316 3216 6213 1362 2361 3261 6231 1623 2613 3612 6312 1632 2631 3621 6321

程序要求:从键盘输入 4 个不同的非 0 数字,列出由这 4 个数字组成的所 有 4 位数,每行输出 6 个。 257、圆环上求素数。 将 0,1,2,……9 共 10 个数排成一圈(如下图)
① 0 ⑨ ⑧ ⑦ ⑥ ⑤ ② ③ ④

给出一个取数长度 L(1<=L<=5),然后从 1 开始按顺时针方向连续取 L 个数字, 拼成一个长为 L 位的数。 此时共有 9 个长为 L 位的数,然后输出这 9 个数中的素 数。 例如:L=2,此时 9 个长为 L 位的数为: 12,23,34,45,56,67,78,89,90 其中素数有:23,67,89 程序要求:输入:L 输出:全部满足条件的素数。如果没有则输出 No 258、求分数和的最小值。 给出一个数字字符串, 即字符串中的字符全部为数字,并以字符'$'结束(字 符'$'本身不是数字符,仅作为结束符号)。 例如: '12$','2135$','312456$',…… 并设字符串的长度 L<=8(包括'$')。 今将数字字符串分成三个部分(分法为任意的),例如: '312456$'可分为'3','124','56'; 或者'31','24','56',…… 从上例可看出,当数字串给出之后,分成三部分的分法是许多的(每一部分 不能为空),对每一种分法,可以得到三个数和三个分数. 例如: 分法'3','124','56'对应的三个数为 3,124,56 对应分数为:1/3,1/124,1/56。 分法'31','24','56'对应的三个数为 31,24,56 对应分数为:1/31,1/24,1/56。 程序要求:从键盘输入一个数字串(以'$'作为结束符号)。找出一种分法, 使得到的三个分数的和 S 为最小,输出 S 的值(精确到小数点后的第 6 位)。 若给出的数字串中,非 0 的字符少于 3 个,则此时不能组成三个数,输出一 个'ERROR'。 例如:'12$','100100$'……

259、最大最小差(MaxMin) 问题描述: 现在有N个正整数,每一次去掉其中2个数a和b,然后加入一个数a*b+1,这样最 后只剩下一个数 P。要求求出最大的 P 记为MaxP ,最小的 p记 MinP ,和他们的差 K=MaxP-MinP。 对于给定的数列,编程计算出它的Max,Min和K。 输入文件(MAXMIN.IN) : 第一行是数列的长度N(不超过50) ,以下N行,每行一个正整数(不超过2位) 。 输出文件(MAXMIN.OUT) : 输出一共三行,每行一个整数,依次为max,min,K。 输入输出样例: MAXMIN.IN MAXMIN.OUT 2 1 1 2 2 0

260、输入一个英文句子,例如: ?This is a Book.",可以看到句子是以?.? 来作为结束符号的,并且单词之间以一个空格来分隔。接着再输入一个单词 A, 请找出首次在句子中出现的与 A$相同的单词,是句子中的第几个单词,若不存 在,则输出该句子中单词字符的总个数。 例如对上句子而言,若输入单词?is? ,则应输出: 2 若输入单词?isa? ,则应输出:11 261、我们将左右对称的自然数称为回文数,例如:121,4114 等; 将只能被 1 与其本身整除的自然数称之为素数,例如:7,353 等。 键入 N,M,求出 N 至 M(含 N 与 M)之间既是回文数又是素数的自然数共有多少 个? 262、现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是 用下面这一张表来证明这一命题的:
1/1 1/2 2/1 2/2 3/1 3/2 4/1 4/2 5/1 … … 1/3 1/4 1/5 … 2/3 2/4 … 3/3 … … 1/1 1/2 2/1 2/2 3/1 3/2 4/1 4/2 5/1 … … 1/3 1/4 1/5 … 2/3 2/4 … 3/3 … …

我们以 Z 字形给上表的每一项编号。 第 1 项是 1/1,然后是 1/2,2/1,3/1,2/2,... 输入:整数 N(1<=N<=107) 输出:表中的第 N 项。 样例:

INPUT N=7 OUT PUT 1/4 263、给出二个任意的正整数 N,K(1<=N<=10000,0<=K<N) ,然后进行如下操作: (30%) (1)从 N 中连续减去 2R(R=0,1,2,3,...) (2)当剩余的数不够减时,则将其加上 K,再重复(1)的操作过程。 (3)若剩余的数为 0 时,则结束操作并输出进行减法的次数。 (4)若存在永远不能减完的情况,则输出信息?ERROR! ? 。 例如:当 N=4,K=2 时,操作过程如下: 1)4-1=3 减 2^0 2)3-2=1 减 2^1 由于不够减,所以加 K 的值 2,得:N=1+2=3 3)3-1=2 减 2^0 4)2-2=0 减 2^1 此时结果为 0,则输出:STEP=4(表示进行了 4 次减法操作运算) 又如:当 N=2,K=1 时,操作过程如下: 1)2-1=1 减 2^0 由于不够下次减,所以加 K 的值 1,得:N=1+1=2 2)2-1=1 减 2^0 ………… 在这种情况下,永远不能减完,则输出信息?ERROR! ? 264、生日日期 ( Birthday ) 问题描述: 小甜甜的生日是 YY 年 MM 月 DD 日,他想知道自己出生后第一万天纪念日的日期 (出生日算第 0 天) 。 输入格式: 从文件的第一行分别读入 YY, MM, DD 其中 1949<=YY<=2002, 日期绝对合法。 输出格式: 输出文件只有一行,即小甜甜生日第一万天以后的日期,格式为 ―YY-MM-DD‖。 样例: BIRTHDAY.DAT
1975 7 15

BIRTHDAY.OUT
2002-11-30

265、 分解因式 ( Factor ) 问题描述: 一个自然数 N 的正因子个数记为 F(N), 例如 18 的所有正因子为 1、 2、 3、 6、

9、18,所以 F(18)=6。现在给出 K,求所有满足 F(N)=K 的 N 中最小的数。 输入格式: 从文件读入数据,第一行为 K,其中 0<K<=80。 输出格式: 输出到文件第一行,如果存在不大于 20000 的解,则输出这个 N,否则输出 ?NO SOLUTION? 。 样例 1: FACTOR.DAT
9

FACTOR.OUT
36

样例 2: FACTOR.DAT
17

FACTOR.OUT
NO SOLUTION

266、 K 好数(K-Good Number) 问题描述: 如果一个自然数 N 的 K 进制表示中任意的相邻的两位都不是相邻的数字,那 么我们就说这个数是 K 好数。求 L 位 K 进制数中 K 好数的数目。例如 K = 4,L = 2 的时候,所有 K 好数为 11、13、20、22、30、31、33 共 7 个。给定 K、L,求 L 位 K 好数的数目。 输入格式: 从文件读入数据,第一行为 K、L,其中 K<=16,L<=10。 输出格式: 将结果输出到 KGOOD.OUT 样例 KGOOD.DAT 4 2 KGOOD.OUT 7

267、Sramoc 问题 ( Sramoc Problem ) 问题描述: Sramoc ( K , M ) 表示用数字 0、1、2…、K-1 组成的自然数中能被 M 整 除的最小数。给定 K、M,求 Sramoc ( K,M )。例如 K=2,M=7 的时候,Sramoc( 2 , 7 ) = 1001。

输入格式: 从文件 SRAMOC.DAT 读入数据。第一行为两个整数 K、M 满足 2<=K<=10、 1<=M<=1000。 输出格式: 输出 Sramoc(K,M) 到 SRAMOC.OUT。 样例 SRAMOC.DAT 2 7 SRAMOC.OUT 1001

268、 数位和与积 试编写程序求出自然数 n 的各个数位之和与之积。 输入:文件中的以此存放了若干个自然数 n(n<500000)。 输出:各行依次输出每一个自然数 n 的各个数位之和与之积。 例如: 输入 92 23 输出 11 18 5 6 269、顺序数串无穷小数 小明构造了一个无穷小数 x=0.1234567891011…9899100101…,其中的数字是依 次写下各自然数而得到的。试求出小数点后第 m 位数字。 输入:文件中每行有一个整数 m( m<=20000)。 输出:输出文件中每行有一个数字,存放着小数点后第 m 位数字。 例如: 输入 4 15 输出 4 2 270、NCL 是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某 公司所委托的一个任务: 需要在该公司某型号的计算器上加上解一元一次方程的 功能。实验室将这个任务交给了一个刚进入的新手 ZL 先生。为了很好的完成这 个任务,ZL 先生首先研究了一些一元一次方程的实例: 4+3x=8

6a-5+1=2-2a -5+12y=0 ZL 先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、 小写字母及+、-、=这三个数学符号(当然,符号?─?既可作减号,也可作 负号) 。方程中并没有括号,也没有除号,方程中的字母表示未知数。 问题求解 编写程序,解输入的一元一次方程, 将解方程的结果(精确至小数点后三位) 输出至屏幕。 你可假设对键入的方程的正确性的判断是由另一个程序员在做, 或者说可认 为键入的一元一次方程均为合法的,且有唯一实数解。 样 例 输入: 6a-5+1=2-2a 输出: a=0.750 271、任意给定一个自然数 N,寻找一个 M,要求 M 是 N 的倍数,且它的所有各位 数字都是 0 或 1 组成,并要求 M 尽可能小 例如:输入 3 输出 3*37=111 输入 31 输出 31*3581=111011 272、由 M 个数组成环行,要求输出他们相邻的四个数的最大值和最少值 (输出第一行为最大值,第二行为最少值) 例如: 输入
1 5 2 3 4 5 14 10

输出:

273、方阵填数:在一个 N ? N 的方阵中,填入 1,2,……N ? N 个数,并要求构成 如下的格式: 例:
N=5 13 14 12 23 11 22 10 21 9 8 15 24 25 20 7 16 1 17 2 18 3 19 4 6 5 N=6 16 17 15 30 14 29 13 28 12 27 11 10 18 31 36 35 26 9 19 32 33 34 25 8 20 21 22 23 24 7 1 2 3 4 5 6

274、若将一个正整数化为二进制数,在此二进制数中,我们将数字 1 的个数多 于数字 0 的个数的这类二进制数称为 A 类数,否则就称其为 B 类数。 例如: (13)10=(1101)2

其中 1 的个数为 3,0 的个数为 1,则称此数为 A 类数; (10)10=(1010)2 其中 1 的个数为 2,0 的个数也为 2,称此数为 B 类数; (24)10=(11000)2 其中 1 的个数为 2,0 的个数为 3,则称此数为 B 类数; 程序要求:求出 1~n 之中(包括 1 与 1000) ,全部 A、B 两类数的个数。 例如:输入 1 输出 A:1 B:0 275、问题描述: 给 出 n 个 整 数 x1,x2,x3,x4..xn, 将 这 n 个 数 从 小 到 大 排 序 为 : A1,A2,A3,A4..AN, 记数列 A1,A2,A3,A4..AN 的奇数项之和为 P, 偶数项之和为 Q, 令 T=|P-Q| 求出 T 的值。 输入格式: 输入文件的第一行为整数 N(1<=n<=50000) 。 接 下 来 的 N 行 每 行 有 一 个 整 数 , 按 顺 序 给 出 X1,X2,X3,..XN 的 值 (|Xi|<=1000) 输出格式: 输出整数 T 的值。 输入样例: 3 1 3 2 输出样例: 2 276、破碎的项链 问题描述 : 你 有一条 由 N 个红 色的 ,白 色的,或 蓝色 的珠子 组成的项链 (3<=N<=350),珠子是随意安排的。 这里是 n=29 的二个例子:
12 r bbr r r r b b b b r b b r r r b r r r b b b b b w w r b r b r r 12 brrb b r r w r b b r r r

r rbr

r

r rrw

b

图片 A

图片

B

r 代表 红色的珠子 b 代表 蓝色的珠子 w 代表 白色的珠子 第一和第二个珠子在图片中已经被作记号。 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb. 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠 子直到你遇到一个不同的颜色珠子,在另一端做同样的事。(颜色可能与在这之 前收集的不同) 确定应该在哪里打破项链来收集到最大多数的数目的子。 Example 举例来说,在图片 A 中的项链,可以收集到 8 个珠子,在珠子 9 和珠 子 10 或珠子 24 和珠子 25 之间打断项链。 在一些项链中,包括白色的珠子 如图片 B 所示。 当收集珠子的时候,一个被遇到的白色珠子可以被当做红色也 可以被当做蓝色。 表现项链的字符串将会包括三符号 r , b 和 w 。 写一个 程序来确定从一条被供应的项链最大可以被收集珠子数目。 PROGRAM NAME: beads
INPUT FORMAT

第 1 行: 第 2 行:

N, 珠子的数目 一串度为 N 的字符串, 每个字符是 r , b 或 w。

SAMPLE INPUT (file beads.in) 29

wwwbbrwrbrbrrbrbrwrwwrbwrwrrb OUTPUT FORMAT 单独的一行包含从被供应的项链可以被收集的珠子数目的最大值。 SAMPLE OUTPUT (file beads.out) 11 277、 骑士问题 问题描述: 在一个标准 8*8 的国际象棋棋盘上,棋盘中有些格子可能是有障碍物的。已 知骑士的初始位置和目标位置, 你的任务是计算出骑士最少需要多少步可以从初 始位置到达目标位置。有障碍物的格子当然不可以到达。 标准的 8*8 的国际象棋棋盘中每一个格子可以用唯一的编号确定。行用 1 -8 这个 8 个数字依次表示,列用‘a‘-?h‘这 8 个字母依次表示。例如左下图的骑 士所在位置(图中有 n 的格子)的编号为?d4? (注意‘d‘和‘4‘之间没有空格)

我们知道国际象棋中的骑士可以按‖L‖路线移动(一个方向走 2 个格子接着 垂直方向走 1 个格子) 。因此,如左上图中的骑士(位于 d4) ,可以到达位置 c2,b3,b5,c6,e6,f5,f3 和 e2(图中有‘x‘标记的格子) 。此外,骑士不能移出棋 盘。 骑士可以按照移动规则自由地在棋盘上没有障碍物的格子中移动。右上图给 出了一个骑士移动的例子。初始格子用‘n‘标记,目标格子用‘N‘标记,有障碍物 的 格 子 用 ‘b‘ 标 记 。 一 个 可 行 的 移 动 序 列 在 图 中 用 数 字 标 记 出 来 。 (a1,b3,a5,c6,e5,g4,h2,f1)。总共需要 7 步才能完成。事实上,这也就是最小 的步数了。 输入格式: 输入文件包括 1 个或多个测试数据。 每一个测试数据的第一行是一个整数 b(-1<=b<=62), 表示棋盘中有障碍物的 格子数目。当 b=-1 时,输入文件结束。 第二行含 b 个不同的有障碍物的格子编号,用空格隔开。当 b=0 时,此行为 空行。 第三行是骑士的初始格子和目标格子的编号,也是用空格隔开。初始格子和 目标格子是不同的。且都没有障碍物。 输出格式: 对于每个数据,输出一行。格式:Board n: m moves 其中 n 表示数据的序号(从 1 开始)m 表示骑士所用的最小的步数。 如果骑士无法到达目标格子,输出:Board n: not reachable 输入样例: 10 c1 d1 c5 c2 c3 c4 d2 d3 d4 d5 a1 f1 0 c1 b3 2 b3 c2 a1 b2 -1 输出样例: Board 1: 7 moves

Board 2: 1 moves Board 3: not reachable 278、 集合删数 问题描述: 一个集合有如下元素: 1 是集合元素; 若 P 是集合的元素, 则 2 * P +1, 4*P+5 也是集合的元素, 取出此集合中最小的 K 个元素,按从小到大的顺序组合成一个 多位数,现要求从中删除 M 个数位上的数字,使得剩下的数字最大,编程输出删 除前和删除后的多位数字。 注:不存在所有数被删除的情况` 输入格式: 输入的仅一行,K,M 的值,K,M 均小于等于 30000。 输出格式: 输出为两行,第一行为删除前的数字,第二行为删除后的数字。 样例输入: 5 4 样例输出: 137915 279、乒乓球( Table.pas) 【问题背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革, 以推动乒乓球运动在全球的普及。其中 11 分制改革引起了很大的争议,有一部 分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上 了乒乓球研究工作,意图弄明白 11 分制和 21 分制对选手的不同影响。在开展 他的研究之前, 他首先需要对他多年比赛的统计数据进行一些分析,所以需要你 的帮忙。 【问题描述】 华华通过以下方式进行分析, 首先将比赛每个球的胜负列成一张表, 然后分别计算在 11 分制和 21 分制下,双方的比赛结果(截至记录末尾) 。 比如现在有这么一份记录, (其中 W 表示华华获得一分, L 表示华华对手获得一 分) : WWWWWWWWWWWWWWWWWWWWWWLW 在 11 分制下,此时比赛的结果是华华第一局 11 比 0 获胜,第二局 11 比 0 获 胜,正在进行第三局,当前比分 1 比 1。而在 21 分制下,此时比赛结果是华华 第一局 21 比 0 获胜,正在进行第二局,比分 2 比 1。如果一局比赛刚开始, 则此时比分为 0 比 0。 你的程序就是要对于一系列比赛信息的输入( WL 形式) ,输出正确的结果。

【输入格式】每个输入文件包含若干行字符串(每行至多 20 个字母) ,字符串 有大写的 W、 L 和 E 组成。其中 E 表示比赛信息结束,程序应该忽略 E 之后的 所有内容。 【输出格式】输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分 (按比赛信息输入顺序) 。其中第一部分是 11 分制下的结果,第二部分是 21 分制下的结果,两部分之间由一个空行分隔。 (注意,如果比分不差 2 分,那么 就是要接着到,例如当比分是 11:10 时,此时比赛不应该结束,继续打,直到 比分差 2 分假设打到 22:20 此时便可以停止) 【输入样例】 WWWWWWWWWWWWWWWWWWWW WWLWE 【输出样例】 11:0 11:0 1:1

21:0 2:1 280、不高兴的津津 【问题描述】 津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要 参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢 琴。 但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高 兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你 帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪 天最不高兴。 【输入文件】 输入文件 unhappy.in 包括七行数据,分别表示周一到周日的日程安排。每行包 括两个小于 10 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈 妈安排她上课的时间。 【输出文件】 输出文件 unhappy.out 包括一行,这一行只包含一个数字。如果不会不高兴则输 出 0, 如果会则输出最不高兴的是周几 (用 1, 2, 3, 4, 5, 6, 7 分别表示周一,

周二,周三,周四,周五,周六,周日) 。如果有两天或两天以上不高兴的程度 相当,则输出时间最靠前的一天。 【样例输入】 5 3 6 2 7 2 5 3 5 4 0 4 0 6 【样例输出】 3 281、花生采摘(peanuts.pas/dpr/c/cpp) 【问题描述】 鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突 然发现路边的告示牌上贴着一张小小的纸条: ?欢迎免费品尝我种的花生!—— 熊字? 。 鲁宾逊先生和多多都很开心, 因为花生正是他们的最爱。 在告示牌背后, 路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图 1) 。有经验的 多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾 逊先生说: ?你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植 株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内 回到路边。 ? 我们假定多多在每个单位时间内,可以做下列四件事情中的一件: 1) 从路边跳到最靠近路边(即第一行)的某棵花生植株; 2) 从一棵植株跳到前后左右与之相邻的另一棵植株; 3) 采摘一棵植株下的花生; 4) 从最靠近路边(即第一行)的某棵花生植株跳回路边。 现在给定一块花生田的大小和花生的分布,请问在限定时间内,多多最多可以采 到多少个花生?注意可能只有部分植株下面长有花生, 假设这些植株下的花生个 数各不相同。 例如在图 2 所示的花生田里, 只有位于(2, 5), (3, 7), (4, 2), (5, 4)的植株 下长有花生,个数分别为 13, 7, 15, 9。沿着图示的路线,多多在 21 个单位时 间内,最多可以采到 37 个花生。 【输入文件】 输入文件 peanuts.in 的第一行包括三个整数,M, N 和 K,用空格隔开;表示花 生田的大小为 M * N(1 <= M, N <= 20) ,多多采花生的限定时间为 K(0 <= K <= 1000)个单位时间。接下来的 M 行,每行包括 N 个非负整数,也用空格隔开; 第 i + 1 行的第 j 个整数 Pij(0 <= Pij <= 500)表示花生田里植株(i, j)下 花生的数目,0 表示该植株下没有花生。 【输出文件】 输出文件 peanuts.out 包括一行,这一行只包含一个整数,即在限定时间内,多 多最多可以采到花生的个数。

【样例输入 1】 6 7 21 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 7 0 15 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 【样例输出 1】 37 【样例输入 2】 6 7 20 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 7 0 15 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 【样例输出 2】 28

282、回文质数 因为 151 即是一个质数又是一个回文数(从左到右和从右到左是看一样的), 所以 151 号是回文质数。 写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)间的所有回文质数; PROGRAM NAME: pprime INPUT FORMAT 第 1 行: 二个整数 a 和 b . SAMPLE INPUT (file pprime.in) 5 500 OUTPUT FORMAT 输出一个回文质数的列表,一行一个。 SAMPLE OUTPUT (file pprime.out) 5 7 11 101 131

151 181 191 313 353 373 383,

283、你要乘坐的飞碟在这里 一个众所周知的事实,在每一慧星后面是一个不明飞行物 UFO。 这些不明飞行 物时常来收集来自在地球上忠诚的支持者。 不幸地,他们的空间在每次旅行只 能带上一群支持者。 他们要做的是用一种聪明的方案让每一个团体人被慧星带 走。 他们为每个慧星起了一个名字,通过这些名字来决定一个团体是不是特定 的慧星带走。 那个相配方案的细节在下面被给出; 你的工作要写一个程序来通过团体的名字和彗星的名字来决定一个组是否应该 与在那一颗慧星后面的不明飞行物搭配。 团体的名字和慧星的名字都以下列各项方式转换成一个数字: 这个最后的数字 代表名字中所有字母的信息,"A" 是 1 和 "Z" 是 26。 举例来说, 团体 "USACO" 会是 21*19*1*3*15=17955 。 如果团体的数字 mod 47 等于慧星的数字 mod 47,那么你要告诉这个团体准备好被带走 ! 写一个程序读入慧星的名字和团体的名字,如果搭配打印"GO"否者打印"STAY" 团体的名字和慧星的名字将会是没有空格或标点的一串大写字母 (不超过 6 个字 母) , Examples: Input Output COMETQ GO HVNGAT ABSTAR STAY USACO PROGRAM NAME: ride INPUT FORMAT 第 1 行: 第 2 行: 彗星的名字(一个长度为 1 到 6 的字符串) 团体的名字(一个长度为 1 到 6 的字符串)

SAMPLE INPUT (file ride.in) COMETQ HVNGAT OUTPUT FORMAT 单独一行包含"STAR"或"GO". SAMPLE OUTPUT (file ride.out) GO

284、踩气球 每年的六月一号都是儿童节,电视上面都想往常一样都会有一个踩气球的节目, 其实规则很简单:在地上放了 100 个标了数字的气球,即气球上分别标 1 到 100 的数字,裁判一声枪响,两个队员同时开始踩气球,开始每个人的分数都为 1 分,当他踩破几号球,便将他的分数乘以这个数字,如:甲第一个踩破了 41 号, 乙第一个踩破了 56 号,他们的分数分别是 41 分和 56 分,以此类推。一分钟后, 双方停止,其余没踩破的气球被拿走,最后看谁的分数最高便假定是胜者[--非 最后确认的,只是暂时认为,假如?甲?为暂时的胜者--]

然而,这个结果没有被裁判确认前,先要进行一项活动,就是败者向胜者进 行质问,如果发现胜者[甲]说的是假话,则乙胜利,如果胜者[甲]说的是真 话,则甲胜利。

譬如,甲说他得了 343 分,乙说他得了 49 分,很显然,甲说谎话,因为 34 3 的因子只有 1、7 和 49,而 49 的因子只有 1、7、49,故他们踩了重复的球, 而这是不可能的,故乙胜利。 但是,如果甲说他得了 162 分,乙得了 81 分,虽然 162=81 乘 2,但是,2 乘 3 乘 27 也可以得 162 分,故甲说得有可能是真话,故甲胜利。 顺便说一下, 如果败者说了假话, 则胜者胜利, 无论他是否说了真话, 譬如, 甲说他得了 10003 分,而乙说他得了 10001 分,显然,两个人都说了假话,但是 我们还是判定甲胜利。 不幸的是, 在场的每个人都沉迷于激动人心的比赛,包括裁判没有谁能静下 心来计算这么复杂的东西, 故要求聪明的你来设计一个程序来判定谁赢得了最后 的胜利。

测试数据 输入 343 49 3599 610 62 36 输出 49 610 62

285、输入包括 4 个部分 1.一部字典,至少有一个单词,最多有 100 个单词,一个一行 2.单独一行‘XXXXXX’表示字典结束 3.很多单词,一行一个 4.2.单独一行‘XXXXXX’表示输入单词结束 输出: 每一个单词都对应输出, 这个单词与字典中的某个单词的字母都匹配的单 词(很拗口) 。例如字典中有 abcd,而给你的单词是 dcba 那么就把 abcd 输出。 如果字典中没有任何的单词与给出的单词匹配的话,那么输出‘NOT A VALID W ORD’ 。当输出完一个单词的全部匹配后,就输出一行‘******’表示结束。 Sample Input tarp given score refund only trap work earn course pepper part XXXXXX resco nfudre aptr sett oresuc XXXXXX

Sample Output score ****** refund ****** part tarp trap ****** NOT A VALID WORD ****** course ****** 286、丑数 丑数就是这个数的质因子只有 2,3,5,7 这四个,除此之外不再含有其它 别的质因子。注意 1 也被认为是丑数.丑数的前 20 个为 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... 1 <= n <= 5842 输入以 0 结束 Sample Input 1 2 3 4 11 12 13 21 22 23 100 1000 5842 0Sample Output The 1st humble number is 1. The 2nd humble number is 2. The 3rd humble number is 3. The 4th humble number is 4. The 11th humble number is 12. The 12th humble number is 14. The 13th humble number is 15.

The The The The The The

21st humble number is 28. 22nd humble number is 30. 23rd humble number is 32. 100th humble number is 450. 1000th humble number is 385875. 5842nd humble number is 2000000000.

287、均分纸牌 [问题描述] 有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必 为 N 的倍数。可以在任一堆上取若干张纸牌,然后移动。 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编 号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可 以移到相邻左边或右边的堆上。 现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。 例如 N=4,4 堆纸牌数分别为: ① 9 ② 8 ③ 17 ④ 6

移动 3 次可达到目的: 从 ③ 取 4 张牌放到 ④ (9 8 13 10) -> 从 ③ 取 3 张牌放到 ② (9 11 10 10)-> 从 ② 取 1 张牌放到① (10 10 10 10) 。 [输 入]: 键盘输入文件名。文件格式: N(N 堆纸牌,1 <= N <= 100) A1 A2 … An (N 堆纸牌,每堆纸牌初始数,l<= Ai <=10000) [输 出]: 输出至屏幕。格式为: 所有堆均达到相等时的最少移动次数。 [输入输出样例] a.in: 4 9 8 17 6

屏慕显示: 3 288、 最短路径 [问题描述] 设有 n 个城市,依次编号为 0,1,2,…,n-1,另外有一个文件保存 n 个城 市之间的距离。当两城市之间的距离等于-1 时,表示这两个城市没有直接连接。 求指定城市 k 到每一个城市 I(0≤I,k≤n-1)的最短距离。保存数据的文件名 从键盘输入。 [输 入]: 键盘输入文件名,文件格式:第一行有两个整数 n 和 k,中间用空格隔开; 以下是一个 N〓N 的矩阵,表示城市间的距离,数据用空格隔开。 [输 出]: 输出至屏幕。格式为: 输出指定城市 k 到各城市间的距离。 [输入输出样例] 输入:INPUT.TXT 5 3 0 40 65 –1 30 40 0 105 –1 –1 65 105 0 10 35 -1 –1 10 0 20 30 –1 35 20 0 289、 背包问题 [问题描述] 从 n 种不同重量、 不同价值的物品中选取一部分物品。要求在不超过限定重 量 limw 的前提下, 使被选取的那些物品的总价值较大。这里约定 limw 不超过 n 种物品的重量总和,也没有一种物品的重量超过 limw ,并且各物品的价值都 大于 0 。 输出: 60 100 0 10 30

设在程序中,n 种物品被顺序编号为 0、1、2、......、n-1。 [输 入]: 从键盘输入物品的种数 n 和限定重量 limw 的值, 以及各种物品的重量和价值。 格式为: 先输入两个整数 n 和 limw,中间用空格隔开;接着输入 n 行,每行两个整数 表示每种物品的重量和价值,数据用空格隔开。 [输 出]: 输出至屏幕。格式为: 输出所选取的那些物品的序号和最大总价值 [输入输出样例] 输入: 5 20 6 1 8 2 11 3 7 4 4 5 290、 字串变换 (存盘名: st4,本题 30 分) [问题描述]: 已知有两个字串 A$, B$ 及一组字串变换的规则(至多 6 个规则): A1$ -> B1$ A2$ -> B2$ 规则的含义为:在 A$中的子串 A1$ 可以变换为 B1$、A2$ 可以变换为 B2$ …。 例如:A$='abcd' 变换规则为: 'abc'->'xu' 'ud'->'y' 'y'->'yz' B$='xyz' 输出: 1 3 4 Total value=11

则此时,A$ 可以经过一系列的变换变为 B$,其变换的过程为: 'abcd'->'xud'->'xy'->'xyz'

共进行了三次变换,使得 A$ 变换为 B$。 [输入]: 键盘输人文件名。文件格式如下: A$ B$ A1$ B1$ \ A2$ B2$ |-> 变换规则 ... ... / 所有字符串长度的上限为 20。 [输出]: 输出至屏幕。格式如下: 若在 10 步(包含 10 步)以内能将 A$ 变换为 B$ ,则输出最少的变 换步数;否则输出"NO ANSWER!" [输入输出样例] b.in: abcd xyz abc xu ud y y yz 屏幕显示: 3 290、税收与补贴问题 问题描述 每样商品的价格越低, 其销量就会相应增大。现已知某种商品的成本及其在 若干价位上的销量(产品不会低于成本销售) ,并假设相邻价位间销量的变化是 线性的且在价格高于给定的最高价位后,销量以某固定数值递减。 (我们假设价 格及销售量都是整数) 对于某些特殊商品, 不可能完全由市场去调节其价格。这时候就需要政府以 税收或补贴的方式来控制。 (所谓税收或补贴就是对于每个产品收取或给予生产 厂家固定金额的货币) 问题求解 你是某家咨询公司的项目经理,现在你已经知道政府对某种商品的预期价 格, 以及在各种价位上的销售情况。要求你确定政府对此商品是应收税还是补贴

的最少金额(也为整数) ,才能使商家在这样一种政府预期的价格上,获取相对 其他价位上的最大总利润。 总利润 = 单位商品利润 * 销量 单位商品利润 = 单位商品价格 – 单位商品成本 (– 税金 or + 补 贴) 输 入 输入的第一行为政府对某种商品的预期价,第二行有两个整数,第一个整数 为商品成本, 第二个整数为以成本价销售时的销量售,以下若干行每行都有两个 整数,第一个为某价位时的单价,第二个为此时的销量,以一行-1,-1 表示所 有已知价位及对应的销量输入完毕, 输入的最后一行为一个单独的整数表示在已 知的最高单价外每升高一块钱将减少的销量。 输 出

输出有两种情况:若在政府预期价上能得到最大总利润,则输出一个单独的 整数,数的正负表示是补贴还是收税,数的大小表示补贴或收税的金额最小值。 若有多解,取绝对值最小的输出。 如在政府预期价上不能得到最大总利润,则输出?NO SOLUTION?. 样 例 输入 31 28 130 30 120 31 110 -1 –1 15 输出 4 291、乘积最大 问题描述 今年是国际数学联盟确定的?2000——世界数学年? ,又恰逢我国著名数学 家华罗庚先生诞辰 90 周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生 面的数学智力竞赛的活动,你的一个好朋友 XZ 也有幸得以参加。活动中,主持 人给所有参加活动的选手出了这样一道题目: 设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它分成 K+1 个部分, 找出一种分法,使得这 K+1 个部分的乘积能够为最大。 同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:

有一个数字串:312, 当 N=3,K=1 时会有以下两种分法: 1) 2) 3*12=36 31*2=62

这时,符合题目要求的结果是:31*2=62 现在,请你帮助你的好朋友 XZ 设计一个程序,求得正确的答案。 输 入

程序的输入共有两行: 第一行共有 2 个自然数 N,K(6≤N≤40,1≤K≤6) 第二行是一个长度为 N 的数字串。





结果显示在屏幕上,相对于输入,应输出所求得的最大乘积(一个自然数) 。 样 输入 4 2 1231 输出 62 292、单词接龙 问题描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏, 现在我们已知一组 单词,且给定一个开头的字母,要求出以这个字母开头的最长的?龙? (每个单 词都最多在?龙?中出现两次) ,在两个单词相连时,其重合部分合为一部分, 例如 beast 和 astonish,如果接成一条龙则变为 beastonish,另外相邻的两部 分不能存在包含关系,例如 at 和 atide 间不能相连。 输 入 输入的第一行为一个单独的整数 n(n<=20)表示单词数,以下 n 行每行有一个 单词,输入的最后一行为一个单个字符,表示?龙?开头的字母。你可以假定以 此字母开头的?龙?一定存在. 输 出 例

只需输出以此字母开头的最长的?龙?的长度 样 输入 5 at touch cheat choose tact a 输出 23 (连成的?龙?为 atoucheatactactouchoose) 例 :

293、字符串编辑 从键盘输入一个字符串(长度<=40 个字符) ,并以字符 ‘.‘ 结束。 例如:‘This is a book.‘ 现对该字符串进行编辑,编辑功能有: D:删除一个字符,命令的方式为: D a 其中 a 为被删除的字符 例如:D s 表示删除字符 ‘s‘ ,若字符串中有多个 ?s‘,则删除第一次出 现的。 如上例中删除的结果为: ?Thi is a book.‘ I:插入一个字符,命令的格式为: I a1 a2 其中 a1 表示插入到指定字符前面,a2 表示将要插入的字符。 例如:I s d 表示在指定字符 ‘s‘ 的前面插入字符 ?d‘ ,若原串中有多个 ?s‘ ,则插入在最后一个字符的前面,如上例中: 原 串:‘This is a book.‘ 插入后:‘This ids a book.‘ R:替换一个字符,命令格式为: R a1 a2 其中 a1 为被替换的字符,a2 为替换的字符,若在原串中有多 个 a1 则应全部替换。 例如: 原 串: ?This is a book.‘ 输入命令:R o e 替换后的字符串为: ?This is a beek.‘ 在编辑过程中,若出现被改的字符不存在时,则给出提示信息。

294、比赛安排 设有有 2 n(n<=6)个球队进行单循环比赛,计划在 2 n – 1 天内完成,每 个队每天进行一场比赛。设计一个比赛的安排,使在 2 n – 1 天内每个队都与不 同的对手比赛。 例如 n=2 时的比赛安排: 队 1 2 比赛 1==2
1==3 1==4

3 4 3==4 2==4 2==3

一天 二天 三天

295、设有一个 n*m 方格的棋盘(1≤m,n≤100) 。 (30%) 求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形) 。 例如:当 n=2,m=3 时

正方形的个数有 8 个;即边长为 1 的正方形有 6 个; 边长为 2 的正方形有 2 个。 长方形的个数有 10 个; 即 2*1 的长方形有 4 个; 1*2 的长方形有 3 个; 3*1 的长方形有 2 个; 3*2 的长方形有 1 个。

程序要求:输入:n 和 m 如上例:输入:2 3

输出:正方形的个数与长方形的个数 输出:8,10

296、将 1,2, 〃 〃 〃 〃 〃 〃,9 共 9 个数排成下列形态的三角形。 (30%)
a b d f g h c e i

其中:a~i 分别表示 1,2, 〃 〃 〃 〃 〃 〃,9 中的一个数字,并要求同时满足下列 条件: (1)a<f<i;

(2)b<d, g<h, c<e (3)a+b+d+f=f+g+h+i=i+e+c+a=P 程序要求: 根据输入的边长之和 P 输出所有满足上述条件的三角形的个数以及其中的一种方案。

297、设有一个 N*M(l≤ N≤50, l≤ M≤ 50)的街道(如下图) :
5 4 3 2 1 北 * * * * * * 4 南 * * 5 * * 6 * * 7 8 9 B (9, 5) 东

西

1 2 3 A(1,1)

规定行人从 A(1,1)出发,在街道上只能向东或北方向行走。 如下为 N=3,M=3 的街道图,从 A 出发到达 B 共有 6 条可供行走的路径:
A6 A3 A A7 A4 A1 B(N,M) A5 A2 1.A-A1-A2-A5-B 2. A-A1-A4-A5-B 3. A-A1-A4-A7-B 4. A-A3-A4-A5-B 5. A-A3-A4-A7-B 6. A-A3-A6-A7-B

若在 N*M 的街道中,设置一个矩形障碍区域(包括围住该区域的街道) 不让行人通行,如图中用?*?表示的部分。 此矩形障碍区域用 2 对顶点坐标给出,前图中的 2 对顶点坐标为:(2, 2),(8,4),此时从 A 出发到达 B 的路径仅有两条。 程序要求: 任务一:给出 N,M 后,求出所有从 A 出发到达 B 的路径的条数。 任务二:给出 N,M,同时再给出此街道中的矩形障碍区域的 2 对顶点坐标 (X1,y1), (X2,Y2) ,然后求出此种情况下所有从 A 出发到达 B 的 路径的条数。 298、将 1,2,…,9 共 9 个数分成三组,分别组成三个三位数,且使这三个三 位数构成 1:2:3 的比例,试求出所有满足条件的三个三位数。 例如:三个三位数 192,384,576 满足以上条件。

299、用高精度计算出 S=1!+2!+3!+…+n! (n≤50) 其中?! ?表示阶乘,例如:5!=5*4*3*2*1。 输入正整数 N,输出计算结果 S。 300、任何一个正整数都可以用 2 的幂次方表示。例如: 137=2^7+2^3+2^0 同时约定方次用括号来表示,即 ab 可表示为 a(b) 。 由此可知,137 可表示为: 2(7)+2(3)+2(0) 进一步:7= 22+2+20 3=2+20 所以最后 137 可表示为: 2(2(2)+2+2(0) )+2(2+2(0) )+2(0) 又如: 1315=210 +28 +25 +2+1 所以 1315 最后可表示为: 2(2(2+2(0) )+2)+2(2(2+2(0) ) )+2(2(2)+2(0) )+2+2(0) 输入:正整数(n≤20000) 输出:符合约定的 n 的 0,2 表示(在表示中不能有空格) 301、回文数 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之 为回文数。 例如:给定一个 10 进制数 56,将 56 加 56(即把 56 从右向左读) ,得到 121 是 一个回文数。 又如:对于 10 进制数 87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 = 4884 在这里的一步是指进行了一次 N 进制的加法, 上例最少用了 4 步得到回文数 4884。 写一个程序,给定一个 N(2<=N<=10,N=16)进制数 M,求最少经过几步可 以得到回文数。如果在 30 步以内(包含 30 步)不可能得到回文数,则输出 ?Impossible! ? 样例: INPUT OUTPUT N = 9 M= 87 STEP=6 302、 旅行家的预算 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时 (21 用 2 表示)

油箱是空的) 。给定两个城市之间的距离 D1、汽车油箱的容量 C(以升为单位) 、 每升汽油能行驶的距离 D2、 出发点每升汽油价格 P 和沿途油站数 N (N 可以为零) , 油站 i 离出发点的距离 Di、每升汽油价格 Pi(i=1,2,…,N) 。计算结果四舍 五入至小数点后两位。如果无法到达目的地,则输出?No Solution? 。 样例: INPUT D1=275.6 C=11.9 D2=27.4 P=2.8 N=2 每升汽油价格 油站号 I 离出发点的距离 Di Pi 1 102.0 2.9 2 OUTPUT 220.0 26.95(该数据表示最小费用) 2.2

303、拦截导弹 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦 截系统有一个缺陷: 虽然它的第一发炮弹能够到达任意的高度,但是以后每一发 炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统 还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入导弹依次飞来的高度(雷达给出的高度数据是不大于 30000 的正整数) , 计算这套系统最多能拦截多少导弹, 如果要拦截所有导弹最少要配备多少套这种 导弹拦截系统。 样例: INPUT 389 207 155 300 299 170 158 65 统数) 304、 邮票面值设计 给定一个信封,最多只允许粘贴 N 张邮票,计算在给定 K(N+K≤40)种邮票 的情况下(假定所有的邮票数量都足够) ,如何设计邮票的面值,能得到最大值 MAX,使在 1~MAX 之间的每一个邮资值都能得到。 例如,N=3,K=2,如果面值分别为 1 分、4 分,则在 1 分~6 分之间的每一 个邮资值都能得到(当然还有 8 分、9 分和 12 分) ;如果面值分别为 1 分、3 分, 则在 1 分~7 分之间的每一个邮资值都能得到。可以验证当 N=3,K=2 时,7 分就 是可以得到的连续的邮资最大值,所以 MAX=7,面值分别为 1 分、3 分。 样例: INPUT N=3 K=2

OUTPUT 6(最多能拦截的导弹数) 2 (要拦截所有导弹最少要配备的系

OUTPUT 1 3 MAX=7

305、火车从始发站(称为第 1 站)开出,在始发站上车的人数为 a,然后到达 第 2 站,在第 2 站有人上、下车,但上、下车的人数相同,因此在第 2 站开 出时(即在到达第 3 站之前)车上的人数保持为 a 人。从第 3 站起(包括第 3 站)上、下车的人数有一定规律:上车的人数都是前两站上车人数之和,而 下车人数等于上一站上车人数,一直到终点站的前一站(第 n-1 站) ,都满足 此规律。现给出的条件是:共有 N 个车站,始发站上车的人数为 a,最后一站 下车的人数是 m(全部下车) 。试问 x 站开出时车上的人数是多少? 输入:a,n,m 和 x 输出:从 x 站开出时车上的人数。 306、设有 n 个正整数(n≤20) ,将它们联接成一排,组成一个最大的多位整数。 例如:n=3 时,3 个整数 13,312,343 联接成的最大整数为:34331213 又如:n=4 时,4 个整数 7,13,4,246 联接成的最大整数为:7424613 程序输入:n n 个数 程序输出:联接成的多位数 307、 . 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法 表,表中的字母代表数字。 例如: 其含义为:
+ L K V E L L K V E K K V E KL V V E KL KK E E KL KK KV L+L=L,L+K=K,L+V=V,L+E=E K+L=K,K+K=V,K+V=E,K+E=KL …… E+E=KV

根据这些规则可推导出:L=0,K=1,V=2,E=3 同时可以确定该表表示的是 4 进制加法 程序输入: n(n≤9)表示行数。 以下 n 行,每行包括 n 个字符串,每个字串间用空格隔开。 (字串仅有一个 为‘+’号,其它都由大写字母组成)

程序输出: ① 各个字母表示什么数,格式如:L=0,K=1,…… ② 加法运算是几进制的。 ③ 若不可能组成加法表,则应输出?ERROR! ? 308、在 N*N 的棋盘上(1≤N≤10) ,填入 1,2,…,N*N 共 N*N 个数,使得任意 两个相邻的数之和为素数。 (30%) 例如:当 N=2 时,有: 其相邻数的和为素数的有: 1 2 1+2,1+4,4+3,2+3 4 3 当 N=4 时,一种可以填写的方案如下: 1 2 11 12 16 15 8 5 13 4 9 14 6 7 10 3 在这里我们约定:左上角的格子里必须填数字 1。 程序要求: 输入:N; 输出:如有多种解,则输出第一行、第一列之和为最小的排列方案;若 无解,则输出?NO! ? 。 309、代数表达式的定义如下:

字母

a b c

例如,下面的式子是合法的代数表达式: a; a+b*(a+c); a*a/(b+c) 下面的式子是不合法的代数表达式:

ab; a+a*/(b+c); 程序要求: 输入:输入一个字符串,以?; ?结束, ?; ?本身不是代数表达式中字 符,仅作为结束) ; 输出: 若表达式正确, 则输出 ?OK? ; 若表达式不正确, 则输出 ?ERROR? , 及错误类型。 错误类型约定: 1. 式了中出现不允许的字符; 2. 括号不配对; 3. 其它错误。 例如:输入:a+(b); 输出:OK 例如:输入:a+(b+c*a; 输出:ERROR 2 310、骑士游历: 设有一个 n*m 的棋盘(2≤n≤50,2≤m≤50) ,如下图,在棋盘上左下角有 一个中国象棋马。
(n,m)



(1,1)

马走的规则为: (1) 马走日字; (2) 马只能向右走 即如下图如示:

任务 1:当 n,m 输入之后,找出一条从左下角到右上角的路径。 例如,输入:n=4,m=4
(4,4)

(1,1)

输出:路径的格式:(1,1)→(2,3)→(4,4)。若不存在路径,则输出‘NO’ 任务 2:当 n,m 给出之后,同时给出马起点的位置和终点的位置,试找出从起 点到终点的所有路径的数目。 例如: (n=10,m=10) , (1,5) (起点) , (3,5) (终点)
10 9 8 7 6 5 4 3 2

1 2

3 4 5

6 7

8 9 10

输 出:2(即由(1,5)到(3,5)共有 2 条路径) 输入格式:n,m,x1,y1,x2,y2 (分别表示 n,m,起点坐标,终点坐标) 输出格式:路径数目(若不存在从起点到终点的路径,输出 0) 311、数制转换 设有一个字符串 A$的结构为: A$=‘m<n>p‘ 其中 m 为数字串(长度<=20) ,而 n,p 均为 1 或 2 位的数字串(其中所表达 的内容在 2-10 之间) 。 程序要求:从键盘上读入 A$后(不用正确性检查) ,将 A$中的数字串 m(n 进制),以 p 进制的形式输出。 例如:A$=‘48<10>8‘ 其意义为:将 10 进制数 48,转换成 8 进制数输出。 输出结果为:48<10>=60<8> 312、挖地雷(30 分) 在一个地图上有 N 个地窖 (N<=20) , 每个地窖中埋有一定数量的地雷。 同时, 给出地窖之间的连接路径。 例如:

V1 V4

V 2 V5

V3

[题目要求] 当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以 沿着指出的连接往下挖(仅能选择一条路径) ,当无连接时挖地雷工作结束。设 计一个挖地雷的方案,使某人能挖到最多的地雷。 输入格式: N: (表示地窖的个数) W1,W2,W3,……WN (表示每个地窖中埋藏的地雷数量) A12…………… . A1N 地窖之间连接路径(其中Aij=1 表示地窖 i,j A23…………..A2N 之间是否有通路:通 Aij=1,不通 Aij==0) …….. AN-1 N 输出格式:

K1--K2--……….KV MAX 例如: ⑩--------⑧ 其输入格式为: 5 10,8,4,7,6 1 1 1 0 0 0 0 1 1 1

(挖地雷的顺序) (挖地雷的数量)

④-----⑦-------⑥ 输出: 1 –3 -4 max=27

-5

313、砝码称重(30 分) 设有 1g、2g、3g、5g、10g、20g 的砝码各若干枚(其总重<=1000) , 要求: 输入方式:a1 a2 a3 a4 a5 a6 (表示 1g 砝码有 a1 个,2g 砝码有 a2 个,…,20g 砝码有 a6 个) 输出方式:Total=N (N 表示用这些砝码能称出的不同重量的个数,但不包括一个 砝码也不用的情况) 如输入:1_1_0_0_0_0 (注:下划线表示空格) 输出:TOTAL=3 表示可以称出 1g,2g,3g 三种不同的重量。 314、编码问题: 设有一个数组 A:ARRAY[0..N-1] OF INTEGER; 数组中存放的元素为 0~N-1 之间的整数,且 A[i]≠A[j](当 i≠j 时) 。 例如:N=6 时,有: A=(4,3,0,5,1,2) 此时,数组 A 的编码定义如下: A[0]的编码为 0; A[i]的编码为:在 A[0],A[1],…,A[i-1]中比 A[i]的值小的个数(i=1, 2,…,N-1) ∴ 上面数组 A 的编码为: B=(0,0,0,3,1,2) 程序要求解决以下问题: ① 给出数组 A 后,求出其编码。 ② 给出数组 A 的编码后,求出 A 中的原数据。 315、灯的排列问题: 设在一排上有 N 个格子(N≤20) ,若在格子中放置有不同颜色的灯,每种灯 的个数记为 N1,N2,……Nk(k 表示不同颜色灯的个数) 。

放灯时要遵守下列规则: ① 同一种颜色的灯不能分开; ② 不同颜色的灯之间至少要有一个空位置。 例如:N=8(格子数) R=2(红灯数) B=3(蓝灯数) 放置的方法有: R-B 顺序 R R R R R R R R B B B B R B B B B B B

R R R

B B B B B

B B B

B-R 顺序 B B B B B B B B B B B B B B R R R R B

B B B

R R R R R

R R R

放置的总数为 12 种。 数据输入的方式为: N P1(颜色,为一个字母) N1(灯的数量) P2 N2 …… Q(结束标记,Q 本身不是灯的颜色) 程序要求:求出一种顺序的排列方案及排列总数。
316、设有一个四层的积木块,1~4 层积木块的数量依次为:5,6,7,8

如下图所示放置:

8 2 3

15 4

8 1

5 4

16 3

9 2

14 6

其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层 的数据计算出来的。 计算的方法是:第三层的某个数据 A 是由第四层相邻的两个数据 B,C 经过 某种计算后产生的:
A B C

计算所用到的计算符为:+,-,? ,且无优先级之分(自左向右计算) ,运算 符最多为 2 个。 如:3+4 ? 5=35 5 ? 4+3=23 可以看出, 上图中的第三层的数据是由第四层的数据用以下计算公式计算出 来的: A=B ? C+B 也就是:8=2 ? 3+2,15=3 ? 4+3,……14=2 ? 6+2 程序要求: 给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据, 并输出整个完整的积木图及计算公式。 ① 输入数据不存在出错的情况,同时也不会超过整数的范围。 ② 计算时可允许出现以下情况: A=B (即可理解为运算符的个数为零) A=B ? B+B (即全部由 B 产生)
317、 问题描述

我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个 以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式。例如: 123可表示为 1*102+2*101+3*100这样的形式。 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该 数字所处位置的(值-1)为指数,以2为底数的幂之和的形式。一般说来,任 何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数。 如果 是以R或-R为基数,则需要用到的数码为 0,1, . . . .R-1。例如,当R =7时,所需用到的数码是0,1,2,3,4,5和6,这与其是R或-R无 关。如果作为基数的数绝对值超过10,则为了表示这些数码,通常使用英文字 母来表示那些大于9的数码。例如对16进制数来说,用A表示10,用B表示 11,用C表示12,用D表示13,用E表示14,用F表示15。 在负进制数中是用-R 作为基数,例如-15(十进制)相当于110001 (-2进制) ,并且它可以被表示为2的幂级数的和数: 110001=1*(-2)5+1*(-2)4+0*(-2)3+0* (-2)2+ 0*(-2)1 +1*(-2)0

问题求解 设计一个程序, 读入一个十进制数和一个负进制数的基数, 并将此十进制数 转换为此负进制下的数: -R∈{-2,-3,-4, . . . ,-20} 输 入 输入的每行有两个输入数据。 第一个是十进制数N(-32768<=N<=32767) ; 数-R。

第二个是负进制数的基

输 出 结果显示在屏幕上,相对于输入,应输出此负进制数及其基数,若此基数超 过10,则参照16进制的方式处理。 样 例 输入 30000 -2 -20000 -2 28800 -16 -25000 -16 输出 30000=11011010101110000(base -2) -20000=1111011000100000 (base -2) 28000=19180 (base -16) -25000=7FB8 (base -16)
318、方格取数

问题描述 设有 N*N 的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格 中则放入数字 0。如下图所示(见样例) :
A 1 2 3 4 向 下 5 6 7 8 0 0 0 0 0 0 0 1 0 0 0 0 21 0 14 0 2 0 0 13 0 0 0 15 0 0 3 4 0 0 0 14 0 0 0 0 5 0 0 7 0 0 0 0 0 6 0 6 0 0 4 0 0 0 向右 7 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B

某人从图的左上角的 A 点出发,可以向下行走,也可以向右走,直到到达右下

角的 B 点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字 0) 。 此人从 A 点到 B 点共走两次,试找出 2 条这样的路径,使得取得的数之和为最 大。 输 入 输入的第一行为一个整数 N(表示 N*N 的方格图) ,接下来的每行有三个整数, 前两个表示位置,第三个数为该位置上所放的数。一行单独的 0 表示输入结束。 输 出 只需输出一个整数,表示 2 条路径上取得的最大的和。 样 例 : 输 入 8 2 3 13 2 6 6 3 5 7 4 4 14 5 2 21 5 6 4 3 15 2 14 0 0 输 出 67

319、求最长非降子序列。 问题描述: 给定一个由 N 个正整数组成的序列,从中间删除 M 个数,剩下的序列非降,要求 M 最小 (N≤1000)。 输入输出要求: (1) 从 键 盘 上 输 入 文 本 文 件 名 ( 共 做 3 次 测 试 , 文 件 名 依 次 为 DATA2_1,DATA2_2,DATA2_3),该文件的第一行为一个整数 N(<1000),第二行为 用空格隔开的 N 个整数(范围:-10000 至 10000) 。 (2) 利用文本文件输出结果(文件名:ANS2.TXT),第一行为一个整数 M,以后为 N-M 个有序整数,每行输出 10 个数) 。

320、三车道停车 问题描述: 现有三车道停车, 将每车道的车按车抵达的地点停靠, 现将以车道的车转 移出去, 只能从上面转, 即: 车道1: 1232131 车道2: 车道3: 车道1: 123213 车道2: 车道3: 1 车道1: 12321 车道2: 车道3: 13 车道1: 1232 车道2: 车道3: 131 车道1: 123 车道2: 2 车道3: 131 车道1: 12 车道2:2 车道3: 1313 车道1: 1 车道2:22 车道3: 1313 车道1: 1 车道2:223 车道3: 131 车道1: 11 车道2:223 车道3: 13 车道1: 11 车道2:2233 车道3: 1

车道1: 111 车道2:22 车道 3: 33 请编一程序进行模拟 321、数的游戏 问题描述: 小红与计算机玩取奇数游戏. 该游戏规则如下: 设计算机为 A 方,小红为 B 方. 小红先输入一个 M(3≤M≤7) ,再输入一个奇数 N(<100) 表示一个盒子 中共有 N 个棋子. 规定 A 方先从盒子中取棋子,以后双方轮流取,每次限取 1-M 个, 不能不取, 也不能多取。 最后取到棋子总数为奇数的一方获胜. 编制程序输 出使 A 方有必胜策略的全部的 N(N<100) ,及 N 的总数。 输入输出要求: (1) (2) (3) 从键盘上输入 M,并判断 M 是否符合要求。 在屏幕上输出符合条件的奇数 N,每输出 10 个数换一行。 最后在屏幕上输出符合条件的 N 的个数。

322、倒水问题 问题描述: 有两个无刻度标志的水壶,分别可装 X 升和 Y 升(X,Y 为整数,X,Y≤100) 的水。设另有一水缸,可用来向水壶灌水或倒出水,两水壶间,水也可以相互倾 灌。已知 X 升壶为满壶,Y 升壶为空壶。问如何通过倒水或灌水操作,用最少步 数能在 Y 升壶中量出 Z(≤100)升的水来。

1

323、打印数字宝塔 【例】 输入:9 输出:(右图)
1 1 1 8

1 1 1 1 1 6 7 21 28 5 4 10 15 20 35 56 70 3 6 10 15 35 2 3

1 1 1 4 5 6 21 56 7 28 1 1 1 1 8 1

324、编程实现十进制数与二进制数、八进制数、十六进制数之间的转换,及二进制数 与十进制数、八进制数、十六进制数之间的转换。输入三个数,分别为:整数,现进

制数,将转换成的进制数。 【例 1】 输入:73,10,2 输出:(73)10=(1001001)2 【例 2】 输入:1011011111110011,2,16 输出:(1011011111110011)2=(B7F3)16 325、分母≤N 的所有最简真分数的递增序列称为 N 阶的 Faray 级数,如 5 阶的 Faray 级数为: 0,1/5,1/4,1/3,2/5,1/2,3/5,2/3,3/4,4/5。 编程,从键盘输入 N(N〈10〉 ,输出 N 阶的 Faray 级数。 【例】 输入:5 输出:0,1/5,1/4,1/3,2/5,1/2,3/5,2/3,3/4,4/5 326、如图,一个数字宝塔,从最顶层到第 M 层(最顶层为 0,次顶层为 1,……,最底 层为 8) ,每次只能走到下一层其左边或右边的数字,输入 M(M<9),N,求出: ①走到 第 M 层的所有数字之和为 N 的途径; ②一条走到第 M 层的数字之和最大的途径。 7 【例】 4 6 输入: 6 9 3 (M,N) :3,23 6 3 7 1 输出: 2 5 3 2 8 No.1 7-4-6-6 5 9 4 7 3 2 No.2 7-4-9-3 6 4 1 8 5 6 3 No.3 7-6-3-7 3 9 7 6 8 4 1 5 Long:29 2 5 7 3 5 7 8 4 2 7-6-9-7 327、奇数数列分组问题 问题描述:如果把奇数数列 1,3,5,7,9,11,13,15,17,19,……,按自 然数的数字为项数进行重组,即 1;3,5;7,9,11;13,15,17,19;……, 则各组内的数字之和刚好是该数所包含的项数的立方和。 例如: (n^3 表示 n 的立方) 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19

…… 输入:从键盘输入分组数 n 的值; 输出: 第 n 组奇数的局部分和及按上述方法分组后的验证表达式和验证结果的真 假。 输入示例: n=5 输出示例: 5^3=29+27+25+23+21 TRUE 328、 队列问题

问题描述:一个队列 11212312341234512345612345671234567812345678912345678910123456789101 1…… 求这个队列中第 n 位的数字。 输入:通过键盘输入 n 的大小 输出:通过屏幕输出该队列中的第 n 个数字。 329、 N 的倍数 问题描述: 写一个程序,对于给定的一个自然数 N(1≤N≤4999) ,和 M 个互不 相同的十进制数字 X1, X2,…,XM (至少一个), 找出 N 的一个最小的正的倍 数,使得该倍数中没有 X1,X2,…,XM 之外的其它数字。 输入格式: 输入文件第一行为整数 N,第二行为整数 M,接下来 M 行 分别列出 数字 X 1,X2..XM 。 输出格式: 输出文件输出为这个倍数,如果无解输出 0。 约束条件:

在所有的测试数据中答案都不会超过 500 位。 样例输入: 4999 4 7 6 9 0 样例输出: 60007996

330、Complete Search 枚举搜索 思想: 写枚举搜索时应遵循 KISS 原则(Keep it simple stupid,译为―写最单纯愚蠢 的程序‖,意思是应把程序写得尽量简洁) ,竞赛时写程序的最终目标就是在限制 时间内求出解,而不需太在意否还有更快的算法。 枚举搜索具有强大的力量,他用直接面向答案并尝试所有方案的方法发现答案。 这种算法几乎总是解题时你第一个想到的方法。 如果它能在规定的时间与空间限 制内找出解, 那么它常常很容易编写与调试。这就意味着你可以有时间去解答其 他难题,即那些不能显示枚举算法强大的题目。 如果你面对一道可能状态小于两百万的题目,那么你可以考虑使用枚举搜索。尝 试所有的状态,看看它们是否可行。 小心!小心! 有时,题目不会直接要求你使用枚举算法。 例题 1:派对灯 [IOI 98] 在一次 IOI 派对上有 N 个灯和 4 个灯开光, 第一个开关可以使所有灯改变状态 (关 上开着的灯,开启关着的灯) ,第二个开关可以改变所有偶数位上灯的状态,第

三个开关可以改变所有奇数位上灯的状态, 第四个开关控制着灯 1、 4、 7、 10…… (3n+1) 。 告诉你 N 的值和所有按开关的次数 (小于 10,000 次) 。 并告诉你某些灯的状态 (例 如:7 号灯是关着的,10 号灯是开着的)请编程输出所有灯可能的最后状态。 很明显,每次按开关你都要偿试 4 种可能。那么总共要试 410000 次(大约 106020) ,那意味着你没有足够的时间去使用枚举搜索,但是我们将枚举方法改 进一下,那就可以使用枚举了。因为无论有多少个灯,由于开关控制的特殊性, 都会出现 6 个灯一次循环的情况,即 1 号灯的状态永远与 7 号灯,13 号灯,19 号灯……相同,2 号灯的状态也永远与 8 号灯,14 号灯,20 号灯……相同。同 样,无论你按了多少次开关,按同一个开关两次就相当于没有按该开关,那么每 一个开关就只需要考虑按一次或没有按,那么这题的枚举量就很小了。 例题 2: 时钟调整 [IOI 94] 有九个钟被摆放在一个 3 X 3 的矩阵中,它们各自指向 12:00,9:00,6:00, 3:00 中的一种,你的目的是将它们的指针全部调向 12:00。很遗憾,每一次调 整你都只能从九种调整方案中选择一种执行(九种方案已被从 1 到 9 编号) ,每 一种方案可以改变固定钟的状态(例如:方案 1 控制钟 1,2,3,方案 2 控制钟 1,4,7,方案 3 控制钟 5,6,8,9……) ,即将方案指定的所有钟向前拨快 3 小时(使时针向顺时针方向旋转 90 度) ,请你输出一个数列,使得按该数列表示 方案执行后,所有钟都指向 12:00。并且如果把整个序列看作一个数,要求该 数最小。 最容易想到的方法是用递归枚举 1 到 9 的方案在该步使用。很可怕,由于递归的 层数在此没有限定,所以将用掉 9k 的时间(k 为层数) ,那可能是相当巨大的。 其实,不用紧张,细心的你一定会发现:当一个方案执行 4 次后,就相当于没有 执行, 又因为题目要求输出最优解, 那么任意一个方案都没有必要 4 次以上执行。 也就是说,只需要枚举每一个方案的 4 种情况(没执行,执行 1,2,3 次)就可 以了。他仅有 49 ,约 262,072 此枚举,我们的计算机 1s 内就可以算完,应该 算是极快了。 类似问题: 挤牛奶 [USACO 1996 初赛] 给出一个挤牛奶的顺序 (农夫 A 在 300 秒到 1000 秒时挤牛奶, 农夫 B 从 700 秒到 1200 秒) ,要求输出: 最长的有人挤牛奶的时间。 最长的没人挤牛奶的时间。 完全数牛与完全数牛群 [USACO 1995 决赛]

如果一个数可以由它的某几个约数相加得到,那么我们叫它完全数,如 28 = 1 + 2 + 4 + 7 + 14。而一对完全对数就是指两个数都可以由对方的约数相加得出。 同样一个完全数组就是一个数组的第一个数可以由第二个数的约数加和得到, 第 二个数也可以由第三个数的约数相加得到……最后一个数可以由第一个数的约 数加和得到。 现在 Farmer John 已经将它的牛儿们编好了号(1 到 32000)请找出其中所有的 完全数牛与完全数牛群。

331、Mixing Milk 混合牛奶 牛奶包装是一个如此低利润的生意,所以尽可能低的控制初级产品(牛奶)的价格 变的十分重要。 请帮助快乐的牛奶制造者(Merry Milk Makers)以可能的最廉价的方式取得他们 所需的牛奶。 快乐的牛奶制造公司从一些农民那购买牛奶, 每个农民卖给牛奶制造公司的价格 不一定相同。 而且,如一只母牛一天只能生产一定量的牛奶,农民每一天只有一定量的牛奶可 以卖。 每天,快乐的牛奶制造者从每个农民那购买一定量的牛奶,少于或等于农民所能 提供的最大值。 给出快乐牛奶制造者的每日的牛奶需求,连同每个农民的可提供的牛奶量和每加 仑的价格,请计算快乐的牛奶制造者所要付出钱的最小值。 注意: 每天农民生产的牛奶的总数对快乐的牛奶制造者来说足够的。

332、milk INPUT FORMAT 第 1 行:二个整数, N 和 M。 第一个数值,N,(0<= N<=2,000,000)是快乐的牛奶制造者的一天需要牛奶的数 量。 第二个数值,M,(0<= M<=5,000)是他们可能从农民那买到的数目。 第 2 到 M+1 行:每行二个整数,Pi 和 Ai。 Pi(0<= Pi<=1,000) 是农民 i 牛奶的价格。 Ai(0 <= Ai <= 2,000,000)是农民 i 一天能卖给快乐的牛奶制造者的牛奶数量。 SAMPLE INPUT (file milk.in) 100 5 5 20

9 3 8 6

40 10 80 30

OUTPUT FORMAT 单独的一行包含单独的一个整数, 表示快乐的牛奶制造者拿到所需的牛奶所要的 最小费用 SAMPLE OUTPUT (file milk.out) 630 332、Barn Repair 修理牛棚 在一个暴风雨的夜晚,农民约翰的牛棚的屋顶、门被吹飞了。 好在许多牛 正在度假, 所以牛棚没有住满。 剩下的牛一个紧挨着另一个被排成一行来过夜。 有些牛棚里有牛,有些没有。 所有的牛棚有相同的宽度。 自门遗失以后,农民 约翰很快在牛棚之前竖立起新的木板。 他的新木材供应者将会供应他任何他想 要的长度,但是供应者只能提供有限数目的木板。 农民约翰想将他购买的木板总 长度减到最少。 给出 M(1<= M<=50),可能买到的木板最大的数目;S(1<= S<=200), 牛棚的总数;C(1 <= C <=S) 牛棚里牛的数目,和牛所在的牛棚的编号 stall_number(1 <= stall_number <= S),计算拦住所有有牛的牛棚所需木板的 最小总长度。 输出所需木板的最小总长度作为的答案。 PROGRAM NAME: barn1 INPUT FORMAT 第 1 行: M , S 和 C(用空格分开)

第 2 到 C+1 行: 每行包含一个整数,表示牛所占的牛棚的编号。 SAMPLE INPUT (file barn1.in) 4 50 18 3 4 6 8 14 15 16 17

21 25 26 27 30 31 40 41 42 43 OUTPUT FORMAT 单独的一行包含一个整数表示所需木板的最小总长度。 SAMPLE OUTPUT (file barn1.out) 25 [ 一种最优的安排是用板拦住牛棚 3-8,14-21,25-31,40-43.] 333、二、打保龄球 源程序名 可执行文件名 输入文件名 输出文件名 bowling.??? (pas,c,cpp) bowling.exe bowling.in bowling.out

打保龄球是用一个滚球去打击十个站立的柱,将柱击倒。一局分十轮,每轮 可滚球一次或多次,以击倒的柱数为依据计分。一局得分为十轮得分之和,而每 轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚球情况有关。即某 轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体 的滚球击柱规则和计分方法如下: (1)若某一轮的第一次滚球就击倒全部十个柱,则本轮不再滚球(若是第十 轮则还需 另加两次滚球, 不妨称其为第十一轮和第十二轮,并不是所有的情况都需要滚第 十一轮和第十二轮球) 。 该轮得分为本次击倒柱数 10 与以后两次滚球所击倒柱数 之和。 (2) 若某一轮的第一次滚球未击倒十个柱, 则可对剩下未倒的柱再滚球一次。

如果这 两次滚球击倒全部十个柱, 则本轮不再滚球(若是第十轮则还需另加一次滚球) , 该轮得分 为这两次共击倒柱数 10 与以后一次滚球所击倒柱数之和。 (3)若某一轮两次滚球未击倒全部十个柱,则本轮不再继续滚球,该轮得分 为这两次 滚球击倒的柱数之和。 总之, 若—轮中一次滚球或两次滚球击倒十个柱,则本轮得分是本轮首次滚 球开始的 连续三次滚球击倒柱数之和(其中有一次或两次不是本轮滚球) 。若一轮内二次 滚球击倒柱 数不足十个,则本轮得分即为这两次击倒柱数之和。下面以实例说明如下(字符 ?/?表示击倒当前球道上的全部的柱): 轮 12 击球情况 8/ 各轮得分 累计总分 30 30 27 57 19 76 9 85 18 103 9 112 20 132 20 152 20 172 20 192 / / / 72 9/ 81 8/ / 9/ / 1 2 3 4 5 6 7 8 9 10 11

现在请你编写一个保龄球实时计分程序,用来计算和显示某轮结束后的得分 情况。若某轮的得分暂时无法算出,则该轮得分不显示。

输入: 输入数据用文件 bowling.in,文件内容仅有一行,为前若干轮滚球的情况, 每轮滚球用一到两个字符表示,每一个字符表示一次击球,字符?/?表示击倒 当前球道上的全部的柱, 否则用一个数字字符表示本次滚球击倒的当前球道上的 柱的数目,两轮滚球之间用一个空格字符隔开。 如上例对应的输入文件内容为:/ / / 72 9/ 81 8/ / 9/ / 8/

输出: 输出到文件 bowling.out,共两行,第一行为每轮得分,第二行为到当前轮 为止的总得分。每个得分之间用一个空格隔开。

样例输入: / / / 72 9/ 81 8/ / 9/ / 8/

样例输出: 30 30 27 57 19 76 9 85 18 103 9 112 20 132 20 152 20 172 20 192

334、表达式的转换(难度系数★★★) 源程序名 可执行文件名 输入文件名 输出文件名 express express express express .??? (PAS,C,CPP) .exe .in .out

[问题描述]: 平常我们书写的表达式称为中缀表达式, 因为它将运算符放在两个操作数中 间,许多情况下为了确定运算顺序,括号是不可少的,而中缀表达式就不必用括 号了。 后缀标记法: 书写表达式时采用运算紧跟在两个操作数之后,从而实现了无 括号处理和优先级处理,使计算机的处理规则简化为:从左到右顺序完成计算, 并用结果取而代之。 例如:8–(3+2*6)/5+4 可以写为:8 3 2 6*+5/–4+ 其计算步骤为:8 3 2 6 * + 5 / – 4 + 8 3 12 + 5 / – 4 + 8 15 5 / – 4 + 8 3 – 4 + 5 4 + 9 编写一个程序,完成这个转换,要求输出的每一个数据间都留一个空格。 [输入]: 就一行,是一个后缀表达式。输入的符号中只有这些基本符号 ?0123456789+-*/^()? ,并且不会出现形如 2*-3 的格式。 表达式中的基本数字也都是一位的,不会出现形如 12 形式的数字。 所输入的字符串不要判错。

[输出]: 若干个中缀表达式,第 I+1 行比第 I 行少一个运算符和一个操作数,最后一 行只有一个数字,表示运算结果。 运算的结果可能为负数, ?/? 以整除运算。 并且中间每一步都不会超过 2^31。 [样例]: express .in 8–(3+2*6)/5+4 express .out 8 3 2 6 * + 5 / – 8 3 12 + 5 / – 4 + 8 15 5 / – 4 + 8 3 – 4 + 5 4 + 9

4

+

335、硬币翻转 在桌面上有一排硬币,共 N 枚,每一枚硬币均为正面朝上。现在要把所有的 硬币翻转成反面朝上, 规则是每次可翻转任意 N-1 枚硬币(正面向上的被翻转为 反面向上,反之亦然) 。求一个最短的操作序列(将每次翻转 N-1 枚硬币成为一 次操作) 。 输入: 输入只有一行,包含一个自然数 N(N 为不大于 100 的偶数) 。 输出: 输出文件的第一行包含一个整数 S,表示最少需要的操作次数。接下来的 S 行每行分别表示每次操作后桌上硬币的状态(一行包含 N 个整数(0 或 1) ,表示 每个硬币的状态:0——正面向上,和 1——反面向上,不允许出现多余空格) 。 对于有多种操作方案的情况,则只需输出一种。 样例: coin.in 4 coin.out 4 0111 1100 0001 1111



更多相关文章:
信息学奥赛历年试题(解答)
历年全国青少年信息学奥赛选择题每题有且仅有一个正确答案) 一、单项选择题(共...是数据库系统 2.微型计算机中,控制器的基本功能是( D.获取外部信息 )不是...
信息学奥赛试题精选33题(附带题解)
信息学奥赛试题精选33题(附带题解)_学科竞赛_高中教育_教育专区。信息学奥赛试题精选33题(附带题解) 基础题:【1 Prime Frequency】 【问题描述】给出一个仅包含...
小学信息学竞赛试题_PASCAL (2)
=== 2014 年东阳市小学信息学竞赛 答题纸(Pascal 语言 满分:100 分 考试时间:二小时完成) 一、选择一个正确答案代码,填入每题的括号内 (每题 1.5 分,多选无...
小学生信息学奥林匹克竞赛试题
武进区小学生信息学奥林匹克竞赛试题 武进区小学生信息学奥林匹克竞赛试题 BASIC 语言 二小时完成 一.选择一个正确答案代码(A/B/C/D),填入每题的括号内 (每...
第五届绍兴市少儿信息学竞赛试题
第五届绍兴市少儿信息学竞赛试题一、选择题(15*2=30 分) 1.下列著名人物中, 没有在计算机相关技术和理论领域作出过杰出贡献的人是 ()。 A 王选 B 图灵 C...
信息学竞赛初赛模拟试题(附答案)
(VAR A:INTEGER) :INTEGER;第 2 页,共 5 页 中学信息学竞赛模拟题 BEGIN A:=A*A; F1:=A—1 END; BEGIN A:=3; A:=F1(A) ; WRITELN(A) END ...
2013安徽省信息学竞赛试题(小学组)
2013安徽省信息学竞赛试题(小学组)_五年级其它课程_其它课程_小学教育_教育专区...3. 命名规则: (1)每题都规定了该题的英文名称。 (2)程序文件和数据文件的...
信息学竞赛习题解答5(模拟)
信息学竞赛习题解答5(模拟)_电脑基础知识_IT/计算机_专业资料。《算法与程序实践...初中信息学竞赛练习题 暂无评价 4页 免费 信息学竞赛题库 3页 免费 §11-5...
信息学奥赛基础知识习题(答案版)
信息学奥赛基础知识习题(答案版) 一、选择题(下列各题仅有一个正确答案,请将你认为是正确的答案填在相应的横线上) 1. 我们把计算机硬件系统和软件系统总称为 ...
信息学竞赛基础训练题单100题的题目
信息学竞赛基础训练题单100题的题目_学科竞赛_小学教育_教育专区。信息学竞赛基础训练题 ***一. 数值计算*** 1、找出 100 到 999 之间的整数中所有等于它每位...
更多相关标签:
信息学奥赛    信息学奥赛noip官网    信息学奥赛一本通    信息学奥赛一本通 pdf    小学信息学奥赛    中学生信息学奥赛试题    信息学奥赛培训    信息学奥赛初赛试题    

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图