搜档网
当前位置:搜档网 › 程序设计大赛题目

程序设计大赛题目

程序设计大赛题目
程序设计大赛题目

2005年百度之星程序设计大赛试题初赛题目

第一题(共四题 100 分):连续正整数( 10 分)

题目描述:一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如:

15=1+2+3+4+5

15=4+5+6

15=7+8

请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。

输入数据:一个正整数,以命令行参数的形式提供给程序。

输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔。如果没有符合要求的序列,输出“NONE” 。

例如,对于 15 ,其输出结果是:

1 2 3 4 5

4 5 6

7 8

对于 16 ,其输出结果是:

NONE

评分标准:程序输出结果是否正确。

百度之星程序设计大赛试题 -2

第二题(共四题 100 分):重叠区间大小( 20 分)

题目描述:请编写程序,找出下面“ 输入数据及格式” 中所描述的输入数据文件中最大重叠区间的大小。

对一个正整数 n ,如果 n 在数据文件中某行的两个正整数(假设为 A 和 B )之间,即 A<=n<=B 或

A>=n>=B ,则 n 属于该行;如果 n 同时属于行 i 和 j ,则 i 和 j 有重叠区间;重叠区间的大小是同时属于行 i 和 j 的整数个数。

例如,行( 10 20 )和( 12 25 )的重叠区间为 [12 20] ,其大小为 9 ;行( 20 10 )和( 12 18 )的重叠区间为 [10 12] ,其大小为 3 ;行 (20 10) 和( 20 30 )的重叠区间大小为 1 。

输入数据:程序读入已被命名为 input.txt 的输入数据文本文件,该文件的行数在 1 到 1,000,000 之间,每行有用一个空格分隔的 2 个正整数,这 2 个正整数的大小次序随机,每个数都在 1 和 2^32-1 之间。(为便于调试,您可下载测试 input.txt 文件,实际运行时我们会使用不同内容的输入文件。)

输出数据:在标准输出上打印出输入数据文件中最大重叠区间的大小,如果所有行都没有重叠区间,则输出 0 。

评分标准:程序输出结果必须正确,内存使用必须不超过 256MB ,程序的执行时间越快越好。

百度之星程序设计大赛试题 -3

第三题(共四题 100 分):字符串替换( 30 分)

题目描述:请编写程序,根据指定的对应关系,把一个文本中的字符串替换成另外的字符串。

输入数据:程序读入已被命名为 text.txt 和 dict.txt 的两个输入数据文本文件, text.txt 为一个包含大量字符串(含中文)的文本,以 whitespace 为分隔符; dict.txt 为表示字符串( s1 )与字符串( s2 )的对应关系的另一个文本(含中文),大约在 1 万行左右,每行两个字符串(即 s1 和 s2 ),用一个 \t 或空格分隔。 dict.txt 中各行的 s1 没有排序,并有可能有重复,这时以最后出现的那次 s1 所对应的 s2 为准。 text.txt 和 dict.txt 中的每个字符串都可能包含除 whitespace 之外的任何字符。text.txt 中的字符串必须和 dict.txt 中的某 s1 完全匹配才能被替换。(为便于调试,您可下载测试text.txt 和 dict.txt 文件,实际运行时我们会使用不同内容的输入文件。)

输出数据:在标准输出上打印 text.txt 被 dict.txt 替换后了的整个文本。

评分标准:程序输出结果必须正确,内存使用越少越好,程序的执行时间越快越好。

第四题(共四题 100 分):低频词过滤( 40 分)

题目描述:请编写程序,从包含大量单词的文本中删除出现次数最少的单词。如果有多

个单词都出现最少的次数,则将这些单词都删除。

输入数据:程序读入已被命名为 corpus.txt 的一个大数据量的文本文件,该文件包含英

文单词和中文单词,词与词之间以一个或多个 whitespace 分隔。(为便于调试,您可下载

测试 corpus.txt 文件,实际运行时我们会使用不同内容的输入文件。)

输出数据:在标准输出上打印删除了 corpus.txt 中出现次数最少的单词之后的文本(

词与词保持原来的顺序,仍以空格分隔)。

评分标准:程序输出结果必须正确,内存使用越少越好,程序的执行时间越快越好。

2005年百度之星程序设计大赛试题总决赛题目

题目描述:

八方块移动游戏要求从一个含8 个数字(用1-8 表示)的方块以及一个空格方块(用0 表示)的3x3 矩阵的起始状态开始,不断移动该空格方块以使其和相邻的方块互换,直至达到所定义的目标状态。空格方块在中间位置时有上、下、左、右 4 个方向可移动,在四个角落上有 2 个方向可移动,在其他位置上有3 个方向可移动。例如,假设一个3x3 矩阵的初始状态为:

2 1 4

7 6 5

目标状态为:

1 2 3

8 0 4

7 6 5

则一个合法的移动路径为:

8 0 3 8 1 3 8 1 3 0 1 3 1 0 3 1 2 3

2 1 4 => 2 0 4 => 0 2 4 => 8 2 4 => 8 2 4 => 8 0 4

7 6 5 7 6 5 7 6 5 7 6 5 7 6 5 7 6 5

另外,在所有可能的从初始状态到目标状态的移动路径中,步数最少的路径被称为最短路径;在上面的例子中,最短路径为 5 。如果不存在从初试状态到目标状态的任何路径,则称该组状态无解。

请设计有效的(细节请见评分规则)算法找到从八方块的某初试状态到某目标状态的所有可能路径中的最短路径,并用C/C++ 实现。

输入数据:

程序需读入已被命名为start.txt 的初始状态和已被命名为goal.txt 的目标状态,这两个文件都由9 个数字组成(0 表示空格,1-8 表示8 个数字方块),每行3 个数字,数字之间用空格隔开。

输出数据:

如果输入数据有解,输出一个表示最短路径的非负的整数;如果输入数据无解,输出-1 。

自测用例:

如果输入为:start.txt 和goal.txt ,则产生的输出应为:

5

又例,如果用

7 8 4

1 0 2

替换start.txt 中的内容,则产生的输出应为:

21

评分规则:

1 )我们将首先使用和自测用例不同的10 个start.txt 以及相同的goal.txt ,每个测试用例的运行时间在一台Intel Xeon 2.80GHz 4 CPU/ 6G 内存的Linux 机器上应不超过10 秒(内存使用不限制),否则该用例不得分;

2 )每个选手的总分(精确到小数点后6 位)=10 秒钟内能产生正确结果的测试用例数量x10+ (1/ 产生这些正确结果的测试用例的平均运行毫秒) ;

3 )如果按此评分统计仍不能得出总决赛将决出的一、二、三等奖共计九名获奖者,我们将先设N=2 ,然后重复下述过程直至产生最高的9 位得分:用随机生成的另外10 个有解的start.txt 再做测试,并对这10*N 个测试用例用2 )中公式重新计算总分,N++ 。

↑TOP

2006年百度之星程序设计大赛试题初赛题目

2006 年百度之星程序设计大赛初赛题目1

饭团的烦恼

“午餐饭团“是百度内部参与人数最多的民间组织。

同一个部门的,同一间大学的,同一年出生的,用同一种型号电脑的,员工们总是以各种理由,各种借口组织各种长久的,临时的饭团。

参加饭团,不仅可以以优惠的价格尝到更加丰富的菜式,还可以在吃饭的时候和同事们唠唠嗑,吹吹水,增进感情。

但是,随着百度的员工越来越多,各个饭团的管理随即变得烦杂。特别是为了照顾员工们越来越挑剔的胃口,饭团的点菜负责人背负的责任越来越大。现在,这个重担落在百度之星的肩上,因为,你们将要为所有的百度饭团设计一个自动点菜的算法。

饭团点菜的需求如下:

1 .经济是我们要考虑的一个因素,既要充分利用百度员工的午餐补助,又不能铺张浪费。因此,我们希望最后的人均费用越接近1

2 元越好。

2 .菜式丰富是我们要考虑的另一个因素。为简单起见,我们将各种菜肴的属性归结为荤菜,素菜,辛辣,清淡,并且每个菜只能点一次。

3 .请紧记,百度饭团在各大餐馆享受8 折优惠。

输入数据描述如下:

第一行包含三个整数N ,M ,K (0

紧接着N 行,每行的格式如下:

菜名(长度不超过20 个字符)价格(原价,整数)是否荤菜( 1 表示是,0 表示否)是否辛辣( 1 表示是,0 表示否)

例:

水煮鱼30 1 1

紧接着是 a b c d 四个整数,分别表示需要点的荤菜,素菜,辛辣,清淡菜的数目。

输出数据:

对于每一测试数据,输出数据包含M+1 行,前M 行每行包含一个菜名(按菜名在原菜单的顺序排序)。第M+1 行是人均消费,结果保留两位小数。

说明:

1 .结果菜单的数目应该恰好为M ,荤菜,素菜,辛辣,清淡菜的数目恰好为a ,b ,c ,d 。在满足这样的前提下,选择人均消费最接近1

2 元的点菜方案。题目数据保证有且仅有一个解。

2 .每组测试数据的结果用一个空行隔开。末尾不要有多余的空行。

输入样例

3 2 2

水煮鱼30 1 1

口水鸡18 1 1

清炖豆腐12 0 0

1 1 1 1

输出样例

口水鸡

清炖豆腐

12.00

时间要求:1S 之内

2006 年百度之星程序设计大赛初赛题目2

题目名称:蝈蝈式的记分

内容描述:

蝈蝈小朋友刚刚学会了0-9 这十个数字, 也跟爸爸妈妈来参加百度每周进行的羽毛球活动。但是他还没有球拍高,于是大人们叫他记录分数。聪明的蝈蝈发现只要记录连续得分的情况就可以了,比如用“ 3 2 4 ” 可以表示一方在这一局中连得三分后,输了两分,接着又连得到四分。可是,后来大人们发现蝈蝈只会用0-9 这十个数字,所以当比赛选手得分超过9 的时候,他会用一个X 来表示10 完成记分。但问题是,当记录为“ X 3 5 ” 的时候,蝈蝈自己也记不起来是一方连续得到十三分后,再输五分;还是先赢十分输三分再赢五分。

因为百度内部就要开始进行羽毛球联赛了,要先摸清大家的实力才好分组比赛呢~于是,大人们想知道以前每局的比分是怎样的,以及谁获得了胜利。要是遇到了根据比赛记录无法确认比赛进程的情况,也要输出相应的提示哦。

需要帮蝈蝈进一步说明的是,比赛是五局三胜的,每局先获得二十一分的为胜,但是胜方必须领先对手两分或以上,否则必须继续比赛直到一方超出对手两分为止,比分多的一方获胜。任何一方先获得三局的胜利后就获得胜利,比赛也相应的结束。而且蝈蝈保证是完整的无多余信息的记录了比赛。

输入数据:

以point.in 为输入文件,文件中首行只有一个整数M ,表示蝈蝈记录了多少场比赛的分数。每场比赛用两行记录,第一行是一个整数N(N<=1000) 表示当前这个记录中有多少个字符,第二行就是具体的N 个字符表示记录的分数。

输出数据:

相应的内容将输出到point.out 文件中,对应每一个分数记录,输出相应的每局分数,每局分数都使用两个整数表示,表示两个选手的得分,中间用":" 分隔开;每组分数记录间使用一个空行分隔开。如果相应的比赛结果无法预测的时候,以” Unknown “一个单词独占一行表示。

??输入和输出结果数据样例:

Sample Input :

3

23

9 7 3 6 2 4 7 8 3 2 7 9 X 2 2 1 2 1 X 1 X 1 1

25

9 3 8 5 4 8 3 9 8 4 X X X X 2 X X X X 2 8 4 9 2 4

43

7 7 7 7 7 3 4 5 6 7 6 5 4 2 1 3 5 7 9 7 5 3 1 3 0 9 9 3 9 3 2 1 1 1 5 1 5 1 5 1 5 5 1

Sample Output :

21:17

24:22

21:3

Unknown

21:14

20:22

21:23

21:16

21:9

2006 年百度之星程序设计大赛初赛题目3

变态的比赛规则

为了促进各部门员工的交流,百度(baidu) 举办了一场全公司范围内的" 拳皇友谊赛" ,负责组织这场比赛的是百度的超级" 拳皇" 迷W.Z. W.Z 不想用传统的淘汰赛或者循环赛的方式,而是自己制定了一个比赛规则。

由于一些员工(比如同部门或者相临部门员工)平时接触的机会比较多,为了促进不同部门之间的交流,W.Z 希望员工自己组成不同组。不同组之间的每两个人都会进行一场友谊赛而同一组内的人则之间不会打任何比赛。

比如 4 个人,编号为1--4, 如果分为两个组并且1,2 一个组, 3 ,4 一个组,那么一共需要打四场比赛:1 vs 3,1 vs 4,2 vs 3,2 vs 4. 而如果是1,2,3 一组,4 单独一组,那么一共需要打三场比赛: 1 vs 4,2 vs 4,3 vs 4.

很快W.Z 意识到,这样的比赛规则可能会让比赛的场数非常多。W.Z 想知道如果有N 个人, 通过上面这种比赛规则,总比赛场数有可能为K 场吗?比如3 个人,如果只分到一组则不需要比赛,如果分到两组则需要 2 场比赛, 如果分为三组则需要 3 场比赛。但是无论怎么分都不可能只需要 1 场比赛。

相信作为编程高手的你一定知道该怎么回答这个问题了吧?那么现在请你帮助W.Z 吧。

输入

每行为一组数据,包含两个数字N, K 。(0=0)

输出

对输入的N,K 如果N 个员工通过一定的分组方式可能会一共需要K 场比赛,则输出"YES", 否则输出"NO", 每组数据占一行。

所有的输入输出均为标准输入输出。

例子

输入文件:

2 0

2 1

3 1

3 2

输出:

YES

YES

NO

YES

2006 年百度之星程序设计大赛初赛题目4

2007-05-14 17:39

剪刀石头布

N 个小孩正在和你玩一种剪刀石头布游戏。N 个小孩中有一个是裁判,其余小孩分成三组(不排除某些组没有任何成员的可能性),但是你不知道谁是裁判,也不知道小孩们的分组情况。然后,小孩们开始玩剪刀石头布游戏,一共玩M 次,每次任意选择两个小孩进行一轮,你会被告知结果,即两个小孩的胜负情况,然而你不会得知小孩具体出的是剪刀、石头还是布。已知各组的小孩分别只会出一种手势(因而同一组的两个小孩总会是和局),而裁判则每次都会随便选择出一种手势,因此没有人会知道裁判到底会出什么。请你在M 次剪刀石头布游戏结束后,猜猜谁是裁判。如果你能猜出谁是裁判,请说明最早在第几次游戏结束后你就能够确定谁是裁判。

输入格式:

输入文件包含多组测试数据。每组测试数据第一行为两个整数N 和M (1 ≤ N ≤ 500 ,0 ≤ M ≤ 2000 ),分别为小孩的个数和剪刀石头布游戏进行的次数。接下来M 行,每行两个整数且中间以一个符号隔开。两个整数分别为进行游戏的两个小孩各自的编号,为小于N 的非负整数。符号的可能值为“ = ”、“ > ”和“ < ”,分别表示和局、第一个小孩胜和第二个小孩胜三种情况。

输出格式:

每组测试数据输出一行,若能猜出谁是裁判,则输出身为裁判的小孩的编号,并输出在第几次游戏结束后就能够确定谁是裁判。如果无法确定谁是裁判,或者发现剪刀石头布游戏的胜负情况不合理(即无论谁是裁判都会出现矛盾),则输出相应的信息。具体输出格式请参考输出样例。

输入样例:

3 3

0<1

1<2

2<0

3 5

0<1

0>1

1<2

0<2

4 4

0<1

0>1

2<3

2>3

1 0

输出样例:

Can not determine

Player 1 can be determined to be the judge after 4 lines

Impossible

Player 0 can be determined to be the judge after 0 lines

说明:

共有 5 个测试数据集,每个测试数据集为一个输入文件,包含多组测试数据。每个测试数据集从易到难分别为 5 、10 、15 、30 和40 分,对每个测试数据集分别执行一次程序,每次必须在运行时限 3 秒内结束程序并输出正确的答案才能得分。

所有数据均从标准输入设备(stdin/cin )读入,并写出到标准输出设备(stdout/cout )中。

五个测试数据集中输入N 分别不大于20 、50 、100 、200 和500 ,各有10 组测试数据。

2006 年百度之星程序设计大赛初赛题目5

座位调整

题目描述:

百度办公区里到处摆放着各种各样的零食。百度人力资源部的调研发现,员工如果可以在自己喜欢的美食旁边工作,工作效率会大大提高。因此,百度决定进行一次员工座位的大调整。

调整的方法如下:

1 .首先将办公区按照各种零食的摆放分成N 个不同的区域。(例如:可乐区,饼干区,牛奶区等等)。

2 .每个员工对不同的零食区域有不同的喜好程度(喜好程度度的范围为1 — 100 的整数,喜好程度越大表示该员工越希望被调整到相应的零食区域)。

3 .由于每个零食区域可以容纳的员工数量有限,人力资源部希望找到一个最优的调整方案令到总的喜好程度最大。

数据输入:

第一行包含两个整数N ,M ,(1<=N ,M<=300 )。分别表示N 个区域和M 个员工。

第二行是N 个整数构成的数列 a ,其中a[i] 表示第i 个区域可以容纳的员工数,(1<=a[i]<=M ,

a[1]+a[2]+..+a[N]=M) 。

紧接着是一个M*N 的矩阵P ,P (i ,j )表示第i 个员工对第j 个区域的喜好度。

答案输出:

对于每个测试数据,输出可以达到的最大的喜好程度。

输入样例:

3 3

1 1 1

100 50 25

100 50 25

100 50 25

输出样例:

175

数据解释:此数据只存在一种安排方法,三个员工分别安置在三个区域。最终的喜好程度为100+50+25=175

2006 年百度之星程序设计大赛初赛题目6

2007-05-14 17:42

百度语言翻译机

时限1s

百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语。他们在平时的交谈,会议,甚至在各中技术文档中都会大量运用。

为了让新员工可以更快地适应百度的文化,更好地阅读公司的技术文档,人力资源部决定开发一套专用的翻译系统,把相关文档中的缩率语和专有名词翻译成日常语言。

输入数据:

输入数据包含三部分

1. 第一行包含一个整数N (N<=10000 ),表示总共有多少个缩率语的词条。

2. 紧接着有N 行的输入,每行包含两个字符串,以空格隔开。第一个字符串为缩率语(仅包含大写英文字符,长度不超过10 ),第二个字符串为日常语言(不包含空格,长度不超过255 ).

3. 从第N+2 开始到输入结束为包含缩略语的相关文档。(总长度不超过1000000 个字符)

输出数据:

输出将缩率语转换成日常语言的文档。(将缩率语转换成日常语言,其他字符保留原样)

输入例子:

6

PS 门户搜索部

NLP 自然语言处理

PM 产品市场部

HR 人力资源部

PMD 产品推广部

MD 市场发展部

百度的部门包括PS ,PM ,HR ,PMD ,MD 等等,其中PS 还包括NLP 小组。

输出例子:

百度的部门包括门户搜索部,产品市场部,人力资源部,产品推广部,市场发展部等等,其中门户搜索部还包括自然语言处理小组。

注意:

1 .输入数据中是中英文混合的,中文采用GBK 编码。

2 .为保证答案的唯一性,缩率语的转换采用正向最大匹配(从左到右为正方向)的原则。请注意输入例子中PMD 的翻译。

↑TOP

2006年百度之星程序设计大赛试题复赛题目

2006 年百度之星程序设计大赛复赛题目1

另类杀人游戏

周末的晚上,百度的员工们总喜欢聚集在公司的会议室玩杀人游戏。从 1 警 1 匪到n 警n 匪,他们尝试了几乎所有流行的杀人游戏规则。终于有一天,连最热衷杀人游戏,“ 杀人” 不眨眼的Austin 也开始对无休止的辩论感到厌烦。于是,他决定改变他的一贯作风,他开始变成了一个“ 杀人不睁眼” 的杀手。

如何做到杀人不睁眼呢?Austin 早已构思好他的杀人计划:

1 . N 个人(包括Austin )坐成一圈玩杀人游戏,按顺时针编号1 ,

2 ,

3 ,

4 。。。。。

2 . Austin 从1 号开始顺时针开始数到第m 号就杀掉第一个人。被杀掉的人要退出游戏。

3 .如果第m 个人恰好是Austin 自己,他就杀掉他顺时针方向的下一个人。

4 . Austin 从被杀的人的下一个顺时针数m 个人,把第m 个杀掉。

5 .重复2-4 ,直至杀掉所有人。

Austin 把这个杀人计谋告诉了法官小k ,他便可以闭起眼睛杀人啦。作为一个正直善良的法官,小k 当然不能让残忍的Austin 得逞,于是,她偷偷把Austin 的杀人计划告诉了作为警察的你,聪明的百度之星。现在,你的任务是活到最后,与Austin 单挑。

输入:

第一个行包含一个整数T ,表示有T 组测试数据。

对于每组测试数据:

三个整数

N ,M ,T ,(3<=N<=10000,1<=M,T<=10000) 分别表示参与游戏的人数,Austin 每隔M 个人会杀掉一人,Austin 初始位置的标号。

输出:

每个测数数据输出一个整数。

你需要选择的初始位置的序号,以确保最后剩下的两个人是你与Austin 。

输入例子:

2

7 4 1

7 4 1

输出例子

5

5

例子说明:杀人顺序为 4 2 7 6 3 5 ,所以5 是你要选择的位置。

2006 年百度之星程序设计大赛复赛题目2

空中飞猴

马戏团里新来了一只很特别的小猴子皮皮——不仅长得漂亮,还很聪明。自从它来到马戏团之后,“ 空中飞猴” 成了马戏团里保留节目,慕名观看的人络绎不绝。“ 空中飞猴” 表演开始时,空中架着两根长长的钢丝。皮皮在其中一根上,它的目标是到达另一个根钢丝上。皮皮必须在爬行一定距离后纵身一跃,直接跳到另一根钢丝的某个位置。由于皮皮的速度非常快,它的运动轨迹可以近似的看成一条直线段。为了不让自己太危险,皮皮希望自己的跳跃距离尽量短,而为了不让观众等得太不耐烦,它在钢丝上的爬行距离不能超过 d 。在爬行距离不超过 d 的情况下,皮皮的跳跃距离最短是多少?

输入格式:

输入文件包含多组测试数据。每组测试数据包含16 个实数x1 ,y1 ,z1 ,x2 ,y2 ,z2 ,x3 ,y3 ,z3 ,x4 ,y4 ,z4 ,xp ,yp ,zp ,d ,表示两根钢丝分别为线段(x1,y1,z1)-(x2,y2,z2) 和(x3,y3,z3)-(x4,y4,z4) ,皮皮的坐标为(xp, yp, zp) ,最大爬行距离为d 。皮皮保证在第一条钢丝上,保证每条钢丝长度大于零。但两条钢丝有可能相交甚至重叠。

输出格式:

每组测试数据输出一行,仅包含一个非负实数,四舍五入保留三位小数,即最短跳跃距离。

输入样例:

0.0 0.0 0.0 4.0 4.0 0.0 4.0 0.0 1.0 0.0 4.0 1.0 2.0 2.0 0.0 10.0

输出样例:

1.000

说明:

共有 3 个测试数据集,每个测试数据集为一个输入文件,包含多组测试数据。每个测试数据集从易到难分别为30 、30 和40 分,对每个测试数据集分别执行一次程序,每次必须在运行时限 3 秒内结束程序并输出正确的答案才能得分。

所有数据均从标准输入设备(stdin/cin )读入,并写出到标准输出设备(stdout/cout )中。

三个测试数据集各有10000 组测试数据。

2006 年百度之星程序设计大赛复赛题目3

星球大战

公元4999 年,人类科学高度发达,绝大部分人都已经移居至浩瀚的宇宙,在上千颗可居住星球上留下了人类的印记。然而,此时人类却分裂成了两个联盟:正义联盟和邪恶联盟。两个联盟之间仇恨难解,时有战争。

现在,正义联盟计划要破坏邪恶联盟的贸易网络,从而影响邪恶联盟的经济状况,为下一次战争作好准备。邪恶联盟由数百颗星球组成,贸易通过星球间的运输航道来完成。一条运输航道是双向的且仅连接两个星球,但两个星球之间可以有多条航道,也可能没有。两个星球之间只要有运输航道直接或间接的相连,它们就可以进行贸易。正义联盟计划破坏邪恶联盟中的一些运输航道,使得邪恶联盟的星球分成两部分,任一部分的星球都不能与另一部分的星球进行贸易。但是为了节省破坏行动所需的开支,正义联盟希望破坏尽量少的运输航道来达成目标。请问正义联盟最少需要破坏多少条运输航道呢?

输入格式:

输入文件包含多组测试数据。每组测试数据第一行为两个整数N 和M ( 2 ≤ N ≤500 ,0≤M≤N(N-1)/2 ),N 为邪恶联盟中星球的数量。接下来M 行,每行三个整数A 、B 和C (0 ≤A ,B0 ),表示星球A 和星球B 之间有C 条运输航道。运输航道的总数量不超过10 8 。

输出格式:

每组测试数据输出一行,包含一个整数,表示需要破坏的运输航道的数量。

如果输入的贸易网络本来就是不连通的,则输出0 。

输入样例:

3 3

0 1 1

2 0 1

4 3

0 1 1

1 2 1

2 3 1

8 14

0 1 1

0 2 1

0 3 1

1 2 1

1 3 1

2 3 1

4 5 1

4 6 1

4 7 1

5 6 1

5 7 1

6 7 1

4 0 1

7 3 1

输出样例:2

1

说明:

共有 5 个测试数据集,每个测试数据集为一个输入文件,包含多组测试数据。每个测试数据集从易到难分别为 5 、10 、15 、30 和40 分,对每个测试数据集分别执行一次程序,每次必须在运行时限10 秒内结束程序并输出正确的答案才能得分。

所有数据均从标准输入设备(stdin/cin )读入,并写出到标准输出设备(stdout/cout )中。

五个测试数据集中输入N 分别不大于20 、50 、100 、200 和500 ,各有9 组测试数据。

2006 年百度之星程序设计大赛复赛题目4

彩球游戏

X 博士是一个研究儿童智力开发方法的科学家,他为幼儿教育领域做出了许多贡献。最近,X 博士正在研究一种适合儿童的游戏,用以辅助发展儿童的观察力、注意力和思维能力。经过连日的构思,X 博士终于设计出了一种游戏:彩球游戏。

彩球游戏是一种单人参与的游戏,游戏首先给出一串由许多不同颜色的小球组成的小球序列,以及一个整数参数M (M ≥ 2)。一段连续的具有相同颜色的小球序列称为连续同色序列。小孩,即游戏参与者,每次可以向任意一段连续同色序列插入一个同色小球,使该序列的长度加一。当一段连续同色序列在插入一个同色小球后其长度达到M 时,该序列就会爆炸消失,然后原序列两边的其余小球会重新连成一串,如果两段相同颜色的连续同色序列在此时连接在一起,它们就会合并形成一段新的连续同色序列。如果新形成的连续同色序列长度达到M ,这段序列也会爆炸消失,然后重复上述过程,直到没有新的长度达到M 的连续同色序列出现为止。游戏的目标很简单,就是插入尽量少的小球,使得所有小球都爆炸消失掉。

通过长时间的游戏和不断提高游戏水平,这个游戏可以很好地开发儿童的观察力、注意力和思维能力。但是X 博士仍然面临着一个困难的问题,他还需要设计出一个游戏演示AI 程序,可以以最优的方式(即插入的小球数量最小)进行游戏,用于游戏教学,或者在游戏中对小孩给出提示。X 博士并不擅长此类程序,因而他无法完成这个任务,你可以帮助他吗?

输入格式:

输入文件包含多组测试数据。每组测试数据第一行为整数M (2 ≤M≤20 ),第二行为一条非空的字符串,由大写字母组成且长度不超过200 ,表示初始的一串小球,不同的字母表示不同的小球颜色。初始时可能会存在一些长度达到M 的连续同色序列,但这些序列不会马上爆炸消失。

输出格式:

每组测试数据输出一行,表示至少需要插入多少次小球才能使所有小球爆炸消失掉。

输入样例:

3

AAABAAA

3

ABBABBA

输出样例:

2

2

说明:

共有 5 个测试数据集,每个测试数据集为一个输入文件,包含多组测试数据。每个测试数据集从易到难分别为 5 、10 、15 、30 和40 分,对每个测试数据集分别执行一次程序,每次必须在运行时限30 秒内结束程序并输出正确的答案才能得分。

所有数据均从标准输入设备(stdin/cin )读入,并写出到标准输出设备(stdout/cout )中。

五个测试数据集中输入初始小球队列的长度分别不大于10 、20 、50 、100 和200 ,各有不超过5000 组测试数据。

2006 年百度之星程序设计大赛复赛题目5

追捕

四个小孩正在花园里玩追捕游戏。一个小孩扮演逃亡者,其余三个小孩做追捕者。花园是一块由N 行M 列方格组成的草地,花园周围有木栏包围着,不能走出,花园里面还有一些障碍物不能够通过。游戏可以进行许多回合,每个回合分成两轮,第一轮追捕者可以进行追捕行动,第二轮逃亡者可以根据前一轮追捕者的行动开展逃亡旅程。在第一轮里,三个追捕者必须在三人中选择一个人向某个相邻的方格走一步,只有在三个人都没有可以走的相邻方格时,他们才允许选择停留在原地。在第二轮里,逃亡者也必须选择某个相邻的方格走一步,如果逃亡者没有任何可走的方格,那么逃亡者就被捕了。四个小孩都不允许走到有障碍物或其他人的方格上,也不能走出花园,因而,四个小孩总是会位于不同的方格上面。

这些小孩都是非常聪明的,三个追捕者也是团结一致的。追捕者如果有可以捉到逃亡者的方法,那么他们就一定不会错过。逃亡者如果有不被捕获的方法,那么他也不会犯错。除此之外,追捕者会希望尽快地捉到逃亡者,而逃亡者即使在会被捕获的情况下也会尽可能地拖延时间。给定花园的障碍物的分布图和四个小孩的初始位置,你知道追捕者有方法捉到逃亡者吗?如果有,他们要经过多少轮后才能捉到逃亡者呢?

输入格式:

输入文件包含多组测试数据。每组测试数据第一行为两个整数N 和M (1 ≤ N ≤10 ,1≤M≤10 ),为花园方格阵列的行数和列数。接下来N 行,每行M 个字符,可以为“ . ” 、“ # ” 、“ O ” 和“ X ” ,分别表示空地、障碍物、追捕者和逃亡者。追捕者总是会有三个,而且四个小孩一开始也都会在空地上面。

输出格式:

每组测试数据输出一行,若追捕者能够捉到逃亡者,则输出他们要经过多少轮后才能成功。轮数的计算包括追捕者和逃亡者进行行动的两轮,逃亡者被捕获的那一轮不算,因而结果总是一个奇数。具体输出格式请参考输出样例。

输入样例:

2 2

OO

OX

3 3

OOO

程序设计部分试题

浙江省高校校等级考试二级练习试题(2) 1设计编写并运行程序,完成以下功能: 将满足条件pow(1.05,n)<1e6 #include void main() { float y=1.05; int n=1; FILE *p; /* * * * * * */ fprintf(p,"%d,%.0f",n,pow(1.05,n)); fclose(p); } 2设计编写并运行程序,完成以下功能: 将数组a的每1行均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),然后将a数组写入到考生文件夹中Paper子文件夹下的新建文件 #include void main() { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; FILE *p; /* * * * * */ for(int i=0;i<3;i++) { for(int j=0;j<3;j++) fprintf(p,"%10.6f",a[i][j]); fprintf(p,"\n"); } fclose(p); } 3设计编写并运行程序,完成以下功能: 已知公鸡每只5元、母鸡每只3元、小鸡1元3只。求出用100元买100只鸡的解。 将得到的解按公鸡、母鸡和小鸡的只数以"%d,%d,%d\n"的格式写入到考生文件夹中Paper 子文件夹下的新建文件

C语言程序设计竞赛题及其答案

数学与统计学院 第三届计算机程序设计竞赛题 竞赛需知: 1、答案必须写在答题纸上。 2、程序采用C/JAVA/VB/VFP语言实现均可。 3、考虑到各种因素,程序的键盘输入和结果输出可以用伪代码或者自然语言表示。但是必 须说明输入变量和输出变量。 4、题目最好能用完整、正确的语言程序来解决问题,如确实无法编写完整语言程序的,可 以写出程序主要框架和流程,必要时可以用伪代码或者自然语言描述算法(程序)。 一、玫瑰花数(20分) 如果一个四位数等于它的每一位数的4次方之和,则称为玫瑰花数。例如: + + 1634+ =, 4^4 4^3 4^6 4^1 编程输出所有的玫瑰花数。 #include void main() { int i,j,k,l,m; for(i=999;i<=9999;i++) { j=i/1000; k=i%10; l=i/100-10*j; m=i/10-100*j-10*l; if(i==j*j*j*j+k*k*k*k+l*l*l*l+m*m*m*m) printf("%d\n",i); } } 二、菱形图案(20分) 对给定的奇数n,编程打印菱形图案。 输入样例: 7 输出样例: * *** ***** ******* ***** *** * #include #include void main() {

int i,j,k; int n; scanf("%d",&n); for(i=0;i #include void main() { int i,j,x,y; float r; int a,b,count=0; printf("请输入矩阵的行列i,j:"); scanf("%d%d",&i,&j); printf("请输入圆心的坐标点及半径x,y,r:"); scanf("%d%d%f",&x,&y,&r); for(a=0;a

程序设计比赛试题

程序设计比赛试题 最少钱币数: 【问题描述】 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【要求】 【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M (1<=M<=2000,整数),接着的一行中,第一个整数K(1<=K<=10)表示币种个数,随后是K个互不相同的钱币面值Ki(1<=Ki<=1000)。输入M=0时结束。 【数据输出】每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。 【样例输入】 15 6 2 5 10 20 50 100 1 1 2 【样例输出】 2 Impossible

Feli的生日礼物 【问题描述】 Felicia的生日是11月1日(和Kitty是同一天生的哦)。于是Feli请来Kitty一起过生日。Kitty带来了最新款的“Kitty猫”玩具准备送给Feli,不过她说,这份礼物可不是白送的。Feli要帮她一个忙,才能够得到心仪已久的玩具。Kitty说,“Kitty猫”玩具已经卖出了n!个,n<=10^100*_*,Kitty想知道确切的数字,而不是无聊的“一个数加个感叹号”。Feli听了大吃一惊。要知道,算出n!是一个无比艰巨的任务。Feli告诉Kitty,就算Feli算出n!,Kitty也看不下去,因为当n=20时,计算机的长整型已经存不下了(Kitty只能接受1-9之间的数字)。于是Kitty说,你只要告诉我n!最后一位非0的数就可以了。Feli想了想,立刻动手写了个程序算出了正确的答案。现在,请你也试试看!注意哦,AC的男生将会得到一个“Hello Kitty”计算器(可编程,CPU 1THz,Mem 1TMB),AC的女生将会得到一个仿真“Hello Kitty”宠物(善解人意,无须喂养,智商1101,附带写情书功能)。 【要求】 【数据输入】每行一个n,直到输入数据结束 【数据输出】对应输入的n,每行输出一个答案 【样例输入】 1101 【样例输出】 8

Linux程序设计2011-2012期末试题部分答案 小东编辑

兰州商学院2011-2012学年第二学期期末考试 Linux程序设计试卷A 一、单项选择题(每小题1分,共计20分) 1. Linux在确定文件名filename是否代表目录文件时,依据( C )。 A. 由程序员指定 B. filename是否位于/etc目录中 C. 该文件i结点中的类型信息 D. filename中的扩展名 2. 在进程p1中用系统函数execvp执行程序p2,则(D )。 A. p1创建一个子进程执行p2 B. p2结束后返回prog1继续执行 C. p1和p2并行执行 D. p2将替换掉prog1的代码 3. 进程调用wait将被阻塞,直到( D )。 A. 用户按任意键 B. 收到时钟信号 C. 子进程被创建 D. 子进程结束 4. Shell脚本中的注释用( C )标记。 A. // B. /*…*/ C. # D. * 5. head命令用于( B )。 A. 显示文件的前10行 B. 显示C语言头文件 C. 显示目录的前10行 D. 显示 6. bind调用用于(A)。 A. 为socket分配地址 B. 客户端与服务器连接 C. 接收socket上的连接 D. 监听socket上的连接 7. 一个进程收到SIGCHILD信号,表示( B )。 A. 创建子进程成功 B. 创建子进程失败 C. 子进程结束 D. 子进程开始运行 8. 当客户端用GET命令请求某文件时,Web服务器用返回码( B )表示没有该文件。 A. 200 B. 404 C. 8080. ②exit(0) 9. 删除命名管道的系统调用是(A)。 A. unlink B. close C. fcolse D. dup2 10. 设可能有多个线程调用pthread_cond_wait(&buf_empty, &lock)后等待条件变量

C语言程序设计试题及答案精编版

C语言程序设计试题及 答案精编版 MQS system office room 【MQS16H-TTMS2A-MQSS8Q8-MQSH16898】

C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是() A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是() A、abc B、12AC C、sun D、A2 3、设有语句inta=4;则执行了语句a+=a-=a*a后,变量a的值是() A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是() A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是() A、% B、/ C、%和/ D、+ 6、以下关于运算符的优先顺序的描述正确的是() A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是()

sum=pad=5;pAd=sum++,pAd++,++pAd; printf(“%d\n”,pad); A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是() A、INPUTx、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456<回车>,下面程序的输出结果是:() voidmain() {intm,n; scanf(“%2d%3d”,&m,&n); printf(“m=%dn=%d\n”,m,n); } A、m=23n=45 B、m=234n=56 C、m=23n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是() main() {intx,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%d\n”,y); } A、0B、22 C、12D、10 11、C语言中while和do-while循环的主要区别()

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

第六届程序设计比赛题目与答案

一、鸡兔同笼 问题描述 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物 输入数据 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (a < 32768)。 输出要求 n行,每行输出对应一个输入。输出是两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用空格分开。如果没有满足要求的情况出现,则输出2个0。 输入样例 2 3 20 输出样例 0 0 5 10 解题思路 这个问题可以描述成任给一个整数N,如果N是奇数,输出0 0,否则如果N是4的倍数,输出N / 4 N / 2,如果N不是4的倍数,输出N/4+1 N/2。这是一个一般的计算题,只要实现相应的判断和输出代码就可以了。题目中说明了输入整数在一个比较小的范围内,所以只需要考虑整数运算就可以了。 参考程序 1.#include 2.void main( ) 3.{ 4.int nCases, i, nFeet; //nCases 表示输入测试数据的组数,nFeet表示输入的脚数。 5.scanf("%d", &nCases); 6.for(i = 0; i < nCases; i++){ 7.scanf("%d", &nFeet); 8.if(nFeet %2 != 0) // 如果有奇数只脚,则输入不正确, 9.// 因为不论2只还是4只,都是偶数 10.printf("0 0\n"); 11.else if (nFeet%4 != 0) //若要动物数目最少,使动物尽量有4只脚 12.//若要动物数目最多,使动物尽量有2只脚 13.printf("%d %d\n", nFeet / 4 + 1, nFeet / 2); 14.else printf("%d %d\n", nFeet / 4, nFeet / 2); 15.} 16.}

c#程序设计复习资料(试题及标准答案版)

c#程序设计部分复习资料 一.填空题 26.C#源程序的后缀名为______.cs________。 26.C#中每个int类型的变量占用____4___个字节的内存。 26.C#的每行语句以________分号_______结尾。 26.布尔型的变量可以赋值为关键字_____true__________或_____false_________。 26.如果int x的初始值为5,则执行表达式x- =3之后,x的值为_____2_________。 26.do...while语句在执行循环体_____之后________测试语句是否满足循环条件。 26.关键字_______class________表示一个类的定义。 26.如果一个类包含一个或多个抽象方法,它是一个_________抽象_____________类。 26.try块运行后,总是会执行_________finally_____________块中的代码。 26.一个数组如果有两个索引值,那么它是__________二维__________数组。 二.单项选择题 1.在对SQLServer数据库操作时应选用( )。 A、SQLServer .NET Framework 数据提供程序;?B、OLE DB.NET Framework 数据提供程序; C、ODBC .NET Framework 数据提供程序;? D、Oracle .NET Framework数据提供程序; 2.下列选项中,( )是引用类型。 A、enum类型??B、struct类型??C、string类型D、int类型 3.C#的数据类型有() A、值和调用类型;?B、值和引用类型;?C、引用和关系类型; D、关系和调用类型 4.下列描述错误的是() A、类不可以多重继承而接口可以; ??B、抽象类自身可以定义成员而接口不可以; C、抽象类和接口都不能被实例化; D、一个类可以有多个基类和多个基接口; 5.下列关于构造函数的描述正确的是( ) A、构造函数可以声明返回类型。?B、构造函数不可以用private修饰 C、构造函数必须与类名相同? D、构造函数不能带参数 6.int[][] myArray3=new int[3][]{new int[3]{5,6,2},newint[5]{6,9,7,8,3},new int[2]{3, 2}}; 那么myArray3[2][2]的值是()。 A、9 ?B、2 ?C、6?D、越界 7.接口是一种引用类型,在接口中可以声明(),但不可以声明公有的域或私有的成员变量。 A、方法、属性、索引器和事件;? B、方法、属性信息、属性; C、索引器和字段;?????D、事件和字段; 8.在https://www.sodocs.net/doc/8818543300.html,中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下 面叙述错误的是()。 A、insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行; B、ExecuteNonQuery()方法返回执行Sql语句所影响的行数。 C、Select操作的Sql语句只能由ExecuteReader()方法来执行; D、ExecuteReader()方法返回一个DataReder对象; 9.Winform中,关于ToolBar控件的属性和事件的描述不正确的是( )。 A、Buttons属性表示ToolBar控件的所有工具栏按钮

程序设计部分试题及答案

第1题/*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:从键盘为一维整型数组输入10个整数,调用fun 函数找出其中最小的数,并在main函数中输出。 请编写fun函数。 -------------------------------------------------*/ #include "" void wwjt(); int fun(int x[],int n) { /**********Program**********/ /********** End **********/ } main() { int a[10],i,min; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%3d",a[i]); printf("\n"); min=fun(a,10); printf("%d\n",min); wwjt(); } void wwjt() {

FILE *IN,*OUT; int iIN[10],i; int iOUT,iCOUNT; IN=fopen("","r"); if(IN==NULL) { printf("Please Verify The Currernt Dir..it May Be Changed"); } OUT=fopen("","w"); if(OUT==NULL) { printf("Please Verify The Current Dir.. it May Be Changed"); } for(i=0;i<10;i++) { for(iCOUNT=0;iCOUNT<10;iCOUNT++) fscanf(IN,"%d",&iIN[iCOUNT]); iOUT=fun(iIN,10); fprintf(OUT,"%d\n",iOUT); } fclose(IN); fclose(OUT); } 参考答案 ---------------------- int min,i; min=x[0]; for(i=1;i

程序设计大赛试题及答案

试题 1、数学黑洞(程序文件名maths.c/maths.cpp) 【问题描述】 任给一个4位正整数,其各位数位上的数字不全相同,将数字重新组合成一个最大的数与最小的数相减,重复这个过程,最多7步,必得6174。对任给的4位正整数(各位数位上的数字不全相同),编程输出掉进黑洞的步数。 【输入】 一行,一个4位正整数n(1000< n<9999) 【输出】 掉进黑洞的步数 输入 1234 输出 3 2、进制转换(程序文件名conver.c/conver.cpp) 【问题描述】 任给一个十进制整数n,及正整数m(m<=16且m≠10), 将n转换成m进制并输出。 【输入】 一行,两个整数n,m(0 ≤ n ≤ 500000,2 ≤ m ≤ 16,且m≠10),中间用一个空格隔开,其中n 表示十进制数。 【输出】 转换后的数 【输入输出样例】 输入 255 8 输出 377 3、分数线划定(程序文件名score.c/score.cpp) 【问题描述】 公务员选拔工作正在 A 市如火如荼的进行。为了选拔优秀人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名公务员,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。 【输入】 第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的人数。输入数据保证m*150%向下取整后小于等于n。 第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。数据保证选手的报名号各不相同。 【输出】 第一行,有两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。 从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。 【输入输出样例】 输入 6 3 1000 90 3239 88 2390 95 7231 84 1005 95 1001 88

C程序设计试题及答案

20XX年lO月高等教育自学考试全国统一命题考试 C++程序设计试卷 (课程代码04737) 本试卷共8页,满分l00分,考试时间l50分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸。2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。3.第二部分为非选择题。必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。4.合理安排答题空间,超出答题区域无效。 第一部分选择题 一、单项选择题(本大题共20小题,每小题l分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。未涂、错涂或多涂均无分。 1.在编译指令中,宏定义使用的指令是 A.#include B.#define C.#if D.#else 2.基类中的protected成员,通过哪种派生,其在派生类中的可见性为protected? A.public和private B.public和protected C.protected和private D.仅protected 3.基类中的public成员,通过public派生,基在派生类中的可见性为 A.不可访问 B.private C.protected D.public 4.不同对象调用同名函数,但导致完全不同行为的现象称为 A.抽象 B.封装 C.继承 D.多态性 5.头文件扩展名为 A.cpp B.h C.ub D.ob 6.声明函数为内联使用的关键字为 A.const B.inline C.short D.signed 7.设类A中有静态数据成员x,两个A类对象a和b,若a.x=10,则b.x的值为 A.9 B.10 C.1l D.不能确定

C语言程序设计大赛题目

日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。 *问题分析与算法设计 本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。 题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。 *程序说明与注释 #include int main() { int n,count=0; printf("Please enter number:"); scanf("%d",&n); /*输入任一整数*/ do{ if(n%2) { n=n*3+1; /*若为奇数,n乘3加1*/ printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n); } else { n/=2; /*若为偶数n除以2*/ printf("[%d]: %d/2=%d\n",++count,2*n,n); } }while(n!=1); /*n不等于1则继续以上过程*/ }

数论中著名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。请编程证此定理。 *问题分析与算法设计 本题是一个定理,我们不去证明它而是编程序验证。 对四个变量采用试探的方法进行计算,满足要求时输出计算结果。 #include #include int main() { int number,i,j,k,l; printf("Please enter a number="); scanf("%d",&number); /*输入整数*/ for(i=1;i int main() { int a,b,c,d; printf("Please enter a number:"); scanf("%d",&a); /*输入整数*/ b=a*a*a; /*求整数的三次方*/ printf("%d*%d*%d=%d=",a,a,a,b); for(d=0,c=0;c

C语言程序设计试题

C语言程序设计试题 一、单项选择题(本题共25小题,每小题2分,共50分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其正确答案涂写在答题卡上。错选、多选或未选均无分。 1. 以下正确的C语言自定义标识符是_A_____。 A. _1a B. 2a_ C. do D. a.12 2. 在C语言中,错误的常数表示是_D_____。 A. 0L B.-0x6aL C. '6' D. 1.234E3.5 3. 设int a, x=2; 执行语句a=x>0?3*x:x=10;后,变量x的值是_B_____。 A. 1 B. 2 C. 6 D. 10 4.设有以下程序段: int x=2,y=2,z=0,a; a=++x||++y&&z++; printf("%d,%d,%d\n",x,y,z); 执行后输出的结果是_____C___。 A. 2, 2, 0 B. 3, 3,1 C. 3, 2, 0 D. 3, 2, 1 5. 在C语言中,字符串"\\TOP\t\65\""的长度是____B___。 A. 5 B.7 C. 8 D. 12 6. 设float x,由键盘输入:12.45, 能正确读入数据的输入语句是__A_____。 A. scanf("%5f",&x) B. scanf("%5d",&x); C. scanf("%f",x); D. scanf("%s",&x); 7.逗号表达式a=2*6,a*3,a+5的值是_B________。 A. 12 B. 17 C.36 D. 41 8. C语言程序中,整型常量的书写形式不包括___A______。 A. 二进制 B. 八进制 C. 十进制 D. 十六进制 9. 在C语言中,下列运算符中结合性属于自右向左的是_B_______。 A. && B. - C.<< D. -> 10. 设int x;,则与计算︱x︱等价的表达式是___B______。 A. x>0?-x:x B. x>0?x:-x C. x<0?x:-x D. x<0?-x:-x 11. 执行下面的程序段后,k的值是_______。 int k=1,n=325; do { k*=n%10;n/=10;}while(n); A. 3 B. 30 C. 523 D. 325 12. 表达式的值为0的是_________。

acm程序设计大赛题目

The Mailboxes Manufacturers Problem Time Limit:1000MS Memory Limit:65536K Total Submit:299 Accepted:227 Description In the good old days when Swedish children were still allowed to blowup their fingers with fire-crackers, gangs of excited kids would plague certain smaller cities during Easter time, with only one thing in mind: To blow things up. Small boxes were easy to blow up, and thus mailboxes became a popular target. Now, a small mailbox manufacturer is interested in how many fire-crackers his new mailbox prototype can withstand without exploding and has hired you to help him. He will provide you with k(1 ≤ k≤ 10) identical mailbox prototypes each fitting up to m(1 ≤ m≤ 100) crackers. However, he is not sure of how many firecrackers he needs to provide you with in order for you to be able to solve his problem, so he asks you. You think for a while and then say, “Well,if I blow up a mailbox I can’t use it again, so if you would provide me with only k = 1 mailboxes, I would have to start testing with 1 cracker, then 2 crackers, and so on until it finally exploded. In the worst case, that is if it does not blow up ev en when filled with m crackers, I would need 1 + 2 + 3 + … + m = m ×(m+ 1) ? 2 crackers. If m = 100 that would mean more than 5000 fire-crackers!” “That’s too many,” he replies. “What if I give you more than k = 1 mailboxes? Can you find a strategy that requires less crackers?” Can you? And what is the minimum number of crackers that you should ask him to provide you with? You may assume the following: 1.If a mailbox can withstand x fire-crackers, it can also withstand x? 1 fire-crackers. 2.Upon an explosion, a mailbox is either totally destroyed (blown up) or unharmed, which means that it can be reused in another test explosion.

C语言程序设计大赛题目

C语言程序设计大赛题 目 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

1.角谷猜想 日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。 *问题分析与算法设计 本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。 题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。 *程序说明与注释 #include<> intmain() { intn,count=0; printf("Pleaseenternumber:"); scanf("%d",&n);/*输入任一整数*/ do{ if(n%2) { n=n*3+1;/*若为奇数,n乘3加1*/ printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n); } else { n/=2;/*若为偶数n除以2*/ printf("[%d]:%d/2=%d\n",++count,2*n,n); } }while(n!=1);/*n不等于1则继续以上过程*/

}

2.四方定理 数论中着名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。 请编程证此定理。 *问题分析与算法设计 本题是一个定理,我们不去证明它而是编程序验证。 对四个变量采用试探的方法进行计算,满足要求时输出计算结果。 #include<> #include<> intmain() { intnumber,i,j,k,l; printf("Pleaseenteranumber="); scanf("%d",&number);/*输入整数*/ for(i=1;i intmain() { inta,b,c,d; printf("Pleaseenteranumber:"); scanf("%d",&a);/*输入整数*/

JAVA语言程序设计期末考试试题及答案

JAVA语言程序设计考试试题及部分答案 一、单选题:(每题1分)下列各题A )、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。 1.下列语句序列执行后,k 的值是( B )。 int m=3, n=6, k=0; while( (m++) < ( -- n) ) ++k; A) 0 B) 1 C) 2 D) 3 2 .设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是(B )。 A) i = i + 2 B) a[0] = 7; C) i++ - --j; D) a(0) = 66; 3 . Java 语言的类间的继承关系是( B ) 。 A) 多重的B) 单重的C) 线程的D) 不能继承 4. 设有定义int i = 6 ; ,则执行以下语句后,i 的值为( C )。 i += i - 1; A) 10 B) 121 C) 11 D) 100 5. 下列选项中,用于在定义子类时声明父类名的关键字是( C )。 A) interface B) package C) extends D) class 6. 若已定义byte[ ] x= {11,22,33,-66} ; 其中0 wk<3,则对x数组元素错误的引用是(C )。

A) x[5-3] B) x[k] C) x[k+5] D) x[0] 7. 下列语句序列执行后,ch1 的值是( B )。 char ch1='A',ch2='W'; if(ch1 + 2 < ch2 ) ++ch1; A) 'A' B) 'B' C) 'C' D) B 8.下列语句序列执行后,i 的值是( D )。 int i=8, j=16; if( i-1 > j ) i--; else j--; A) 15 B) 16 C) 7 D) 8 9.下列语句序列执行后,k 的值是( C )。 int i=10, j=18, k=30; switch( j - i ) { case 8 : k++; case 9 : k+=2; case 10: k+=3; default : k/=j; } A) 31 B) 32 C) 2 D) 33 10 .下面语句执行后,i 的值是( B )。 for( int i=0, j=1; j < 5; j+=3 ) i=i+j; A) 4 B) 5 C) 6 D) 7 11 .设有定义float x=, y=, z= ;则以下的表达式中,值为true 的是( B ) A) x > y || x > z B) x != y

相关主题