文档库 最新最全的文档下载
当前位置:文档库 › C语言程序大赛试题

C语言程序大赛试题

A1

描述

有一种特殊的日历法,它的一天和我们现在用的日历法的一天是一样长的。它每天有10个小时,每个小时有100分钟,每分钟有100秒。10天算一周,10周算一个月,10个月算一年。现在要你编写一个程序,将我们常用的日历法的日期转换成这种特殊的日历表示法。这种日历法的时、分、秒是从0开始计数的。日、月从1开始计数,年从0开始计数。秒数为整数。假设0:0:0 1.1.2000 等同于特殊日历法的0:0:0 1.1.0。

输入

第一行是一个正整数N ,表明下面有N 组输入。每组输入有一行,格式如下:hour:minute:second day.month.year

表示常规的日期。日期总是合法的。2000 <= year <= 50000。

输出

每组输入要求输出一行。格式如下:mhour:mmin:msec mday.mmonth.myear 是输入日期的特殊日历表示方法。

样例输入

7

0:0:0 1.1.2000

10:10:10 1.3.2001

0:12:13 1.3.2400

23:59:59 31.12.2001

0:0:1 20.7.7478

0:20:20 21.7.7478

15:54:44 2.10.20749

样例输出

0:0:0 1.1.0

4:23:72 26.5.0

0:8:48 58.2.146

9:99:98 31.8.0

0:0:1 100.10.2000

0:14:12 1.1.2001

6:63:0 7.3.6848

B1

描述

给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。

比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。

关于输入

输入包括多组测试数据。每组数据包括一行,给出2到15个两两不同且小于100的正整数。每一行最后一个数是0,表示这一行的结束后,这个数不属于那2到15个给定的正整数。输入的最后一行只包括一个整数-1,这行表示输入数据的结束,不用进行处理。

关于输出

对每组输入数据,输出一行,给出有多少个数对满足其中一个数是另一个数的两倍

例子输入

1 4 3

2 9 7 18 22 0

2 4 8 10 0

7 5 11 13 1 3 0

-1

例子输出

3

2

描述

问题描述:

宇航员在太空中迷失了方向,在他的起始位置现在

建立一个虚拟xyz坐标系,称为绝对坐标系,宇航员正

面的方向为x轴正方向,头顶方向为z轴正方向,则宇

航员的初始状态如图所示:

现对六个方向分别标号,x,y,z正方向分别为0,1,2,

负方向分别为3,4,5;称它们为绝对方向。宇航员在

宇宙中只沿着与绝对坐标系xyz轴平行的方向行走,但

是他不知道自己当前绝对坐标和自己面向的绝对方向。

任务描述:

请根据宇航员对自己在相对方向上移动的描述确定宇航员最终的绝对坐标和面向的绝对方向。对在相对方向上移动的描述及意义如下:

forward x 向前走x米。

back x先转向后,再走x米。

left x 先转向左,再走x米。

right x 先转向右,再走x米。

up x 先面向上,再走x米。

down x 先面向下,再走x米。

其中向上和向下如下图所示:

输入

第一行一个正整数m,表示测试数据的组数。每组测试数据第一行是一个正整数n(1<=n<=10000)表示宇航员行走的次数,下面n行每行输入一次相对行走,格式如上所述,其中( 1 <= x <= 10000 为正整数)。

输出

对于每组输入数据输出一行,x y z p, 中间用空格隔开,x y z是宇航员的位置的绝对坐标,p 是宇航员面向的绝对方向编号(0<=p <=5)。

样例输入

1

6

left 10

right 11

up 12

down 13

forward 14

back 15

样例输出

23 -10 12 3

描述

根据参数,画出矩形。

关于输入

输入由多行组成,每行四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行,宽不少于5行);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。

当用户输入0时表示输入结束。

关于输出

输出画出的图形

例子输入

6 5 * 1

7 7 @ 0

例子输出

*****

*****

*****

*****

*****

*****

@@@@@@@

@ @

@ @

@ @

@ @

@ @

@@@@@@@

A3

描述

数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。

比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。

输入

输入包括一些正整数(小于101000),每个一行。输入的最后一行是0,表示输入的结束,这一行不用处理。

输出

对每个正整数,输出它的数根。每个结果占据一行。

样例输入

24

39

样例输出

6

3

B3

描述

在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走。从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走则输出NO。

关于输入

输入的第一行为一个整数m,表示迷宫的数量。

其后每个迷宫数据的第一行为一个整数n(n≤16),表示迷宫的边长,接下来的n行每行n 个字符,字符之间没有空格分隔。

关于输出

输出有m行,每行对应的迷宫能走,则输出YES,否则输出NO。

例子输入

1

7

s...##.

.#.....

.......

..#....

..#...#

###...#

......e

例子输出

YES

A4

描述

n 位的一个整数是循环数(cyclic)的条件是:当用一个1 到n 之间的整数去乘它时, 会得到一个将原来的数首尾相接循环移动若干数字再在某处断开而得到的数字。也就是说,如果把原来的数字和新的数字都首尾相接,他们得到的环是相同的。只是两个数的起始数字不一定相同。例如,数字142857 是循环数,因为:

142857 *1 = 142857

142857 *2 = 285714

142857 *3 = 428571

142857 *4 = 571428

142857 *5 = 714285

142857 *6 = 857142

输入

写一个程序确定给定的数是否是循环数。输入包括多个长度为 2 位到60 位的整数。(注意,先导的0也是合理的输入不应该被忽略,例如"01"是 2 位数,"1" 是1 位数。)

输出

对于每一个输入的整数,输出一行表明它是否是循环数。

样例输入

142857

142856

142858

01

0588235294117647

样例输出

142857 is cyclic

142856 is not cyclic

142858 is not cyclic

01 is not cyclic

0588235294117647 is cyclic

B4

描述

一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。这些产品通常使用一个6*6*h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你来设计。

输入

输入文件包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空格隔开,分别为1*1至6*6这六种产品的数量。输入文件将以6个0组成的一行结尾。

输出

除了输入的最后一行6个0以外,输入文件里每一行对应着输出文件的一行,每一行输出一个整数代表对应的订单所需的最小包裹数。

样例输入

0 0 4 0 0 1

7 5 1 0 0 0

0 0 0 0 0 0

样例输出

2

1

A5

描述

给定两个正整数a和b。可以知道一定存在整数x,使得

x <= logab < x + 1

输出x

输入

第1行是测试数据的组数n,每组测试数据占2行,分别是a和b。每组测试数据之间有一个空行,每行数据不超过100个字符

输出

n行,每组测试数据有一行输出,也就是对应的x。输入数据保证x不大于20

样例输入

3

10000

1000000000001

10000

999999999999

999999999999999999999999999999999999999999999999

1

样例输出

3

2

B5

描述

“相关月”是指哪些在一年中月份的第一天星期数相同的月份。

例如,九月和十二月是相关的,因为九月一日和十二月一日的星期数总是相同的。

两个月份相关,当且仅当两个月份第一天相差的天数能被7整除,也就是说,这两天相差为几个整星期。

又如,二月和三月一般都是相关月,因为二月有28天,能被7整除,也恰好为4个星期。而在闰年,一月和二月的相关月与它们在平年的相关月是不同的,因为二月有29天,其后每个月份的第一天星期数都推后了一天。

关于输入

输入的第一行为整数n(n≤200),

其后n行,每行三个整数,依次为一个年份和两个月份,整数之间用一个空格分隔。

关于输出

输出有n行,对应于每个输入的年份和相应两个月份,

如果这两个月份是相关的,则输出YES;

否则,输出NO。

例子输入

5

1994 10 9

1935 12 1

1957 1 9

1917 9 12

1948 1 4

例子输出

NO

NO

NO

YES

YES

A6

描述

如上图,有3个方格,每个方格里面都有一个整数a1,a2,a3。已知0 <= a1, a2, a3 <= n,而且a1 + a2是2的倍数,a2 + a3是3的倍数,a1 + a2 + a3是5的倍数。你的任务是找到一组a1,a2,a3,使得a1 + a2 + a3最大。

输入

输入的第一行是一个数t,表示测试数据的数目。接下来的t行,每行给出一个n (0 <= n <= 100)的值。

输出

对于每一个n的值,输出a1 + a2 + a3的最大值。

样例输入

2

3

样例输出

5

B6

描述

N盏灯排成一排,从1到N依次编号。有N个人也同样编号。

第一个人将灯全部熄灭;

第2个人将对应2和2的倍数的灯打开;

第3个人将对应着3和3的倍数的灯做反向操作(如果原来是开,则关掉它,否则就打开它);

以后的人和3做同样的操作,即第i个人将对应着i和i的倍数的灯做反向操作。

输入

灯的总数N, 1<=N<=1000

输出

在第N个人操作后,顺序输出还亮着灯的编号。

样例输入

8

样例输出

2 3 5 6 7 8

A7

描述

有一个正方形的墙,由N*N个正方形的砖组成,其中一些砖是白色的,另外一些砖是黄色的。Bob 是个画家,想把全部的砖都涂成黄色。但他的画笔不好使。当他用画笔涂画第(i, j)个位置的砖时,位置(i-1, j)、(i+1, j)、(i, j-1)、(i, j+1)上的砖都会改变颜色。请你帮助Bob计算出最少需要涂画多少块砖,才能使所有砖的颜色都变成黄色。

输入

第一行是个整数t(1≤t ≤20),表示要测试的案例数。然后是t个案例。每个案例的首行是一个整数n (1≤n ≤15),表示墙的大小。接下来的n行表示墙的初始状态。每一行包含n个字符。第i行的第j个字符表示位于位置(i,j)上的砖的颜色。“w”表示白砖,“y”表示黄砖。

输出

每个案例输出一行。如果Bob能够将所有的砖都涂成黄色,则输出最少需要涂画的砖数,否则输出“inf”。

样例输入

2

3

yyy

yyy

yyy

5

wwwww

wwwww

wwwww

wwwww

wwwww

样例输出

15

B7

描述

a的立方= b的立方+ c的立方+ d的立方为完美立方等式。例如12的立方= 6的立方+ 8的立方+ 10的立方。编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d),使得a的立方= b的立方+ c的立方+ d的立方,其中a,b,c,d 大于1, 小于等于N。

输入

正整数N (N≤100)

输出

每行输出一个完美立方,按照a的值,从小到大依次输出。当两个完美立方等式中a的值相同,则依次按照b、c、d进行非降升序排列输出,即b值小的先输出、然后c值小的先输出、然后d值小的先输出。

样例输入

24

样例输出

Cube = 6, Triple = (3,4,5)

Cube = 12, Triple = (6,8,10)

Cube = 18, Triple = (2,12,16)

Cube = 18, Triple = (9,12,15)

Cube = 19, Triple = (3,10,18)

Cube = 20, Triple = (7,14,17)

Cube = 24, Triple = (12,16,20)

A8

描述

有9个时钟,排成一个3*3的矩阵。

现在需要用最少的移动,将9个时钟的指

针都拨到12点的位置。共允许有9种不

同的移动。如右表所示,每个移动会将若

干个时钟的指针沿顺时针方向拨动90

度。

移动影响的时钟

1 ABDE

2 ABC

3 BCEF

4 ADG

5 BDEFH

6 CFI

7 DEGH

8 GHI

9 EFHI

输入

从标准输入设备读入9个整数,表示各时钟指针的起始位置。1=12点、1=3点、2=6点、3=9点。

输出

输出一个最短的移动序列,使得9个时钟的指针都指向12点。按照移动的序号大小,输出结果。

样例输入

3 3 0

2 2 2

2 1 2

样例输出

4 5 8 9

B8

描述

判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多

输入

第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串

每组测试数据之间有一个空行,每行数据不超过1000个字符且非空

输出

n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。

如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符

样例输入

2

abbccc

adfadffasdf

样例输出

c 3

f 4

A9

描述

1 2 3 4 5 6 7

#############################

1 # | # | # | | #

#####---#####---#---#####---#

2 # # | # # # # #

#---#####---#####---#####---#

3 # | | # # # # #

#---#########---#####---#---#

4 # # | | | | # #

#############################

(图 1)

# = Wall

| = No wall

- = No wall

图1是一个城堡的地形图。请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。城堡被分割成m n(m≤50,n≤50)个方块,每个方块可以有0~4面墙。

输入

程序从标准输入设备读入数据。第一行是两个整数,分别是南北向、东西向的方块数。在接下来的输入行里,每个方块用一个数字(0≤p≤50)描述。用一个数字表示方块周围的墙,1表示西墙,2表示北墙,4表示东墙,8表示南墙。每个方块用代表其周围墙的数字之和表示。城堡的内墙被计算两次,方块(1,1)的南墙同时也是方块(2,1)的北墙。输入的数据保证城堡至少有两个房间。

输出

城堡的房间数、城堡中最大房间所包括的方块数。结果显示在标准输出设备上。

样例输入

4

7

11 6 11 6 3 10 6

7 9 6 13 5 15 5

1 10 1

2 7 1

3 7 5

13 11 10 8 10 12 13

样例输出

5

9

B9

描述

写一个函数,使给定的一个矩阵数组转置,即行列互换。

比如输入

1 2 3

4 5 6

7 8 9

输出

1 4 7

2 5 8

3 6 9

关于输入

先输入一个正整数n代表矩阵式n行n列的n的大小不会超过100

关于输出

输出转置之后的矩阵

例子输入

3

1 2 3

4 5 6

7 8 9

例子输出

1 4 7

2 5 8

3 6 9

A10

描述

已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。

比如,如下4 * 4的矩阵

0 -2 -7 0

9 2 -6 2

-4 1 -4 1

-1 8 0 -2

的最大子矩阵是

9 2

-4 1

-1 8

这个子矩阵的大小是15。

输入

输入是一个N * N的矩阵。输入的第一行给出N (0 < N <= 100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给出矩阵中的N2个整数,整数之间由空白字符分隔(空格或者空行)。已知矩阵中整数的范围都在[-127, 127]。

输出

输出最大子矩阵的大小。

样例输入

4

0 -2 -7 0 9 2 -6 2

-4 1 -4 1 -1

8 0 -2

样例输出

15

B10

相关文档
相关文档 最新文档