初一上学期信息技术相关话题急搜

全国信息学奥林匹克联赛(NOIP2008)复赛

推广小组

一.专题概述

ISBN号排座传球游戏立体图

英文标题isbn座球图

可执行文件名称isbn座球图

输入文件名ISBN。inseat.inball.indrawing.in。

输出文件名ISBN . out seat . out ball . out drawing . out。

每个考点的时间限制是1秒1秒1秒1秒。

测试点数10 10 10 10

每个考点的分数是10 10 10 10。

比较方法全文比较全文比较全文比较全文比较全文比较全文比较全文比较

话题类型传统传统传统传统

2.提交源文件名

对于pascal语言ISBN。pass seat . pas ball . pas drawing . pas

对于C语言的ISBN。cseat.cball.cdrawing.c。

对于C++语言ISBN。CPPSEAT。CPPBall。CPPDrawing。CPP。

三。编译命令(没有任何优化开关)

对于pascal语言,FPC国际标准书号。PASFPC座椅。PASFPC球。PASFPC图纸。帕斯。

对于c语言gcc -o国际标准书号。

ISBN . c gcc–o座位

seat . c gcc–o球

ball . c gcc–o图纸

绘图. c

对于C++语言,g++–O ISBN

ISBN . CPP g++–o座位

seat . CPP g++–o球

ball . CPP g++–o

图画

绘图. cpp

四。运行内存限制

最大运行内存为50m 50m 50m 50m。

注意事项:

1.文件名(程序名和输入/输出文件名)必须小写。

2.C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3.全国统一评测使用的机器配置为:CPU 1.9GHz,内存512M,以上时限以此配置为准。

各省可在自测时根据具体配置调整时限。

1.ISBN号

(isbn.pas/c/cpp)

问题描述

每本正式出版的书都有与之对应的ISBN号。ISBN码包括9位数字、1位数字识别码和3位数字分隔符,其规定格式为“X-x-xxx-xxxxx-x-X”,其中符号“-”为分隔符(键盘上的减号),最后一位数字为识别码,例如0-670-8218。ISBN码的第一位数字表示该书的出版语言,如0代表英语;第一个分隔符“-”后的三位数字代表出版社,如670代表维京出版社;第二个分隔符后的五位数字代表该书在出版社的编号;最后一个数字是识别码。

识别码的计算方法如下:

第一个数字乘以1,第二个数字乘以2...诸如此类。利用得到的结果mod 11,余数就是识别码。如果余数为10,则识别码为大写字母x,例如ISBN号0-670-82162-4中的识别码4的计算方法如下:将067082162这9个数字从左到右分别乘以1,2,…,9,然后求和,即0× 1+6×。

你的任务是写一个程序,判断输入的ISBN号中的识别码是否正确,如果正确,就输出“对”即可;如果错了,输出你认为正确的ISBN号。

投入

输入文件isbn.in只有一行,是一个字符序列,表示一本书的isbn号(保证输入符合ISBN号的格式要求)。

输出

输出一行isbn.out***。如果输入的ISBN号识别码正确,则输出“正确”,否则,按照指定的格式输出正确的ISBN号(包括分隔符“-”)。

输入和输出样本1

isbn.in isbn.out

0-670-82162-4右

输入和输出样本2

isbn.in isbn.out

0-670-82162-0 0-670-82162-4

2.成排座位

(seat.pas/c/cpp)

问题描述

上课的时候,总有一些同学和周围的人窃窃私语,这是小学班主任很头疼的事情。不过班主任小雪发现了一些有趣的现象。当学生的座位确定后,只有数量有限的D对会在课堂上交头接耳。学生在教室里坐M排N列,坐I排j列。

学生的立场是(I,J)。为了方便学生进出,教室里有K个横向通道和L个纵向通道。于是,聪明的小雪想到了一个减少学生上课交头接耳问题的办法:她打算重新摆放桌椅,改变桌椅之间通道的位置,因为如果一条通道把两个会交头接耳的学生隔开,他们就不会交头接耳了。

请帮忙给小雪写一个程序,给出最好的渠道划分方案。在这个方案下,上课交头接耳的学生是最少的。

投入

在输入文件seat.in的第一行,有五个用空格分隔的整数,分别是m,n,k,l,d (2

在下一个D行中,每行有四个整数用空格隔开,第一个I行的四个整数、易、皮、齐表示坐在位置(、易)和(皮、齐)的两个同学会交头接耳(输入保证前后相邻或左右相邻)。

输入数据保证了最优方案的唯一性。

输出

输出文件seat.out***两行。

第一行包含k个整数,a1a2...aK,意思是A1和A1之间,A2和a2+1之间要开通道,...,在AK和aK+1之间,其中AI Ai+1,每两个整数之间用空格隔开(行尾没有空格)。

第二行包含L个整数,b1b2...bk,表示应该在b1和b1之间,b2和b2+1之间打开通道,...,在bL和bL+1之间,其中毕比+1,每两个整数之间用空格隔开(行尾没有空格)。

投入产出样本

入座,出座

4 5 1 2 3

4 2 4 3

2 3 3 3

2 5 2 4 2

2 4

输入输出示例说明

* *

※ + +

1 2 3 4 5

上图中,正在交头接耳的三对同学的位置用符号*、※、+标注,图中三条粗线的位置代表通道,图示的通道划分方案是唯一的最佳方案。

传球游戏

(ball.pas/c/cpp)

问题描述

上体育课的时候,小曼的老师经常和同学一起做游戏。这一次,老师带着学生一起玩传球游戏。

游戏规则如下:N个学生站成一圈,其中一个人拿着一个球。当老师吹哨时,他开始传球。每个学生可以把球传给他周围的两个学生中的一个(左或右)。当老师再次吹哨时,传球停止。这个时候,拿着球不递出去的学生就是失败者,他会给你表演。

聪明的小个子提出了一个有趣的问题:有多少种不同的传球方法可以使从小个子手里传过来的球在传了m次后回到小个子手里?两种传球方法视为不同的方法,当且仅当接球的学生在接球的顺序上有不同的顺序。比如有三个同学,1号,2号,3号,假设小曼是1号,三次传球后把球回小曼手里的方式是1-& gt;2->;3->;1和1->;3->;2->;1,***2种。

投入

输入文件ball.in***有两个整数n,m (3

输出

输出文件ball.out***有一行整数表示满足问题含义的方法的数量。

投入产出样本

球进了球出了

3 3 2

限制

40%的数据符合:3

100%的数据符合:3

4.多边形

(drawing.pas/c/cpp)

问题描述

小渊是个聪明的男孩。他经常给周围的孩子讲一些他认为有趣的事情。最近他准备给孩子们讲解立体图。请帮他画立体图。

小渊惠三有一个面积为m*n的长方形区域,上面有m*n个边长为1的正方形,每个正方形上堆着一些大小相同的积木(积木的长宽高都是1)。小渊希望你打印出这些方块的三维图。我们将每个构建块定义为以下格式,不会做任何翻转旋转,而只会严格按照这种形式放置:

+ - +

//|高

+ - + |

| | +

| | |/宽度

+ - +

长的

每个顶点用1加号“+”表示,长度用3“-”,宽度用1“/”,高度用2“|”。字符“+”-“/”|”的ASCII码分别为43、45、47、124。这个角色。(ASCII码46)需要作为背景输出,即立体图像中的空白部分需要替换为’。。三维绘图如下:

如果两个构造块彼此相邻,则示意图如下:

..+ - + - +

。/ / /|

+ - + - + |

| | | +

| | |/.

+ - + - + ..

如果两个构造块彼此相邻,如下所示:

..+ - +

。/ /|

+ - + |

| | +

| |/|

+ - + |

| | +

| |/.

+ - + ..

如果两个构造块彼此相邻,则示意图如下:

….+ - +

…/ /|

..+ - + |

。/ /| +

+ - + |/.

| | + ..

| |/…

+ - +….

在立体图中,定义位于第(m,1)个网格(即第m行第1列的网格)上的自下而上的第一个积木块(即最低的积木块)的顶点为整张图片的左下角。

投入

输入文件drawing.in的第一行由两个整数m和n用空格隔开,表示有m*n个网格(1

接下来的m行是一个m*n矩阵,每行有n个整数,用空格隔开,其中第I行第J列的整数表示第I行第J列的网格上堆叠了多少个积木(1

输出

输出文件drawing.out包含了题目要求的立体图,是一个k行l列的字符矩阵,其中k和l表示按照规定至少需要k行l列才能输出立体图。

投入产出样本

画入画出

3 4

2 2 1 2

2 2 1 1

3 2 1 2 ......+ - + - +...+ - +

..+ - + / /|../ /|

。/ /|-+ - + |.+ - + |

+ - + |/ /| +-| | +

| | + - + |/+ - + |/|

| |/ /| +/ /|-+ |

+ - + - + |/+ - + |/| +

| | | +-| | + |/.

| | |/ | |/| + ..

+ - + - + - + - + |/ ...

| | | | | + ....

| | | | |/ .....

+ - + - + - + - + ......

全国信息学奥林匹克联赛(NOIP2008)复赛

改进小组

一.专题概述

哑猴火柴棍等转印纸双叠分拣

英语标题词匹配信息二叠

可执行文件名称字匹配消息二堆栈

输入文件名单词,inmatches。消息中。成双入对。

输出文件名word . out matches . out message . outtwo stack . out。

每个考点的时间限制是1秒1秒1秒1秒。

测试点数10 10 10 10

每个考点的分数是10 10 10 10。

比较方法全文比较全文比较全文比较全文比较全文比较全文比较全文比较

话题类型传统传统传统传统

第二,提交源文件名

对于Pascal语言的单词。pas matches . pas message . pastwostack . pas

对于C语言的单词。c匹配。c消息。cTWOStack.c。

对于C++语言的word。CPP匹配。CPP消息。CPP二叠。CPP。

三。编译命令(不包括任何优化开关)

对于Pascal语言fpcword。pasfpmatches。pasfpcmessage。pasfptwostack。帕斯。

对于c语言gcc–o word word . cgcc–o matches matches . cgcc–o message message . cgcc–o two stack two stack . c

对于C++语言G++-o word word。CPPG ++ o匹配。CPPG ++ o消息。CPPG ++ o两栈两栈。CPP。

第四,运行内存限制

最大运行内存为50m 50m 50m 50m。

注意事项:

1.文件名(程序名和输入/输出文件名)必须大写。

2.C/c++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3.全国统一评测使用的机器配置为:CPU 1.9GHz,内存512M,以上时限以此配置为准。各省可在自测时根据具体配置调整时限。

1.愚蠢的猴子

(wird.pas/c/cpp)

问题描述

笨猴子词汇量小,每次做英语选择题都很头疼。但是他找到了一个方法,而且已经被实验证明,这个方法选择正确选项的概率是非常高的!

这个方法的具体描述如下:假设maxn是一个单词中出现频率最高的字母的次数,minn是一个单词中出现频率最低的字母的次数。如果maxn-minn是一个质数,那么笨猴子认为这是一个吉祥字,这样的字很可能就是正确答案。

投入

输入文件word.in只有一行,是一个单词,其中可能只出现小写字母,长度小于100。

输出

输出文件word.out***两行,第一行是字符串,假设输入的字是幸运字,则输出“幸运字”,否则输出“无答案”;

第二行是一个整数。如果输入字是幸运字,输出maxn-minn的值,否则输出0。

输入和输出样本1

单词输入单词输出

错误幸运词

2

I/O示例1解释

在单词error中,出现频率最高的字母r出现三次,出现频率最低的字母1次,3-1=2,2是一个素数。

输入和输出样本2

单词输入单词输出

奥林匹克没有答案

输入和输出样本2解释

在奥林匹克这个词中,出现频率最高的字母I出现了两次,出现频率最低的字母是1次,2-1=1,1不是质数。

2.火柴杆方程

(matches.pas/c/cpp)

问题描述

给你n根火柴棍,你能拼出多少个类似“A+B=C”的方程?等式中,a、b、c是用火柴棍拼出来的整数(如果数字不为零,最高位不能是0)。用火柴棒拼出数字0-9,如图所示:

注意:

1.加号和等号各需要两根火柴杆。

2.若A≠B,则A+B=C和B+A=C视为不同的方程(A,B,C >;=0)

3.必须使用所有N根火柴杆。

投入

在文件matches.in中输入一行*** *,和另一个整数n (n

输出

输出文件matches.out***一行,表示可以拼写的不同方程的数量。

输入和输出样本1

火柴。进火柴。出

14 2

I/O示例1解释

这两个方程是0+1=1和1+0=1。

输入和输出样本2

火柴。进火柴。出

18 9

输入和输出样本2解释

这九个等式是:

0+4=4

0+11=11

1+10=11

2+2=4

2+7=9

4+0=4

7+2=9

10+1=11

11+0=11

传递纸条

(wassage.pas/c/cpp)

问题描述

小渊和小轩是好朋友和同学。他们在一起总是有说不完的话题。在一次素质拓展活动中,班上同学安排做一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,不能直接对话。幸运的是,他们可以通过传纸条来交流。纸条会通过很多同学发给对方。小渊坐在矩阵的左上角,坐标为(1,1),小轩坐在矩阵的右下角,坐标为(m,n)。从小源到小轩的音符只能向下或向右传递,从小轩到小源的音符只能向上或向左传递。

在活动中,小渊希望给小轩发一张便条,并希望小轩给他一个答复。班上每个人都可以帮他们传,但只能传一次。也就是说,如果这个人在小渊递给小轩一张纸条的时候帮忙,他在小轩递给小渊的时候就不会帮忙了。反之亦然。

还有一点需要注意的是,班里每个学生的好感度有高有低(注:小渊和小轩对好感度没有定义,用0输入),可以用0-100的自然数来表示,数字越大越好。小渊和小轩希望尽可能找到善良度高的同学帮忙传纸条,也就是找两条来回传递的路径,让这两条路径上的同学的善良度只有最大。现在,请帮助小渊和小轩找到这样两条路。

投入

输入文件message.in的第一行有两个由空格分隔的整数m和n,表示类中有m行和n列(1

接下来的m行是一个m*n的矩阵,矩阵中I行J列的整数表示坐在I行J列的同学的善意。每行中的n个整数由空格分隔。

输出

输出文件message.out***包含了一个整数,代表了来回两条路参与送纸条的同学的善心的最大总和。

投入产出样本

消息输入消息输出

3 3

0 3 9

2 8 5

5 7 0 34

限制

30%的数据符合:1

100%的数据满足:1

4.双栈排序

(twostack.pas/c/cpp)

问题描述

汤姆最近在研究一个有趣的排序问题。如图所示,通过两个栈S1和S2,Tom希望通过以下四种运算对输入序列进行升序排序。

操作a

如果输入序列不为空,则将第一个元素推入堆栈S1。

操作b

如果堆栈S1不为空,堆栈S1的顶部元素被弹出到输出序列。

操作c

如果输入序列不为空,则将第一个元素推送到堆栈S2上。

操作d

如果堆栈S2不为空,堆栈S2的顶部元素将被弹出到输出序列。

如果一个1~n的置换P可以使输出序列1,2,...(n-1),N,Tom称为“双栈可排序排列”。例如,(1,3,2,4)是“双栈可排序序列”,而(2,3,4,1)不是。下图描述了一个排序(1,3,2,4): < a,c,c,b,a,d,d,b & gt

当然,可能有几个这样的操作顺序。对于上面的例子(1,3,2,4),< a,c,c,b,a,d,d,b & gt是另一种可行的操作顺序。汤姆想知道字典顺序最小的运算序列是什么。

投入

输入文件twostack.in的第一行是整数n。

第二行有n个正整数,用空格隔开,形成1 ~ n的排列。

输出

输出一行文件twostack.out***,如果输入排列不是“双栈可排序排列”,输出数字0;否则输出字典顺序最小的操作序列,每两个操作之间用空格隔开,行尾没有空格。

输入和输出样本1

双栈。双栈。出

1 3 2 4 a b a b a b a b a b

输入和输出样本2

双栈。双栈。出

2 3 4 1 0

输入和输出样本3

双栈。双栈。出

2 3 1 a c a b b d

限制

30%的数据符合:n

50%的数据符合:n

100%数据符合:n