noip2008提高组复赛试题

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

提高组

一、题目概览

二、提交源程序文件名

三、编译命令(不包含任何优化开关)

四、运行内存限制

注意事项:

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

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

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

1. 笨小猴

(wird.pas/c/cpp)

【问题描述】

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!

这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。

【输入】

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

输出文件word.out共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;

第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。

【输入输出样例1】

【输入输出样例1解释】

单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。

【输入输出样例2】

【输入输出样例2解释】

单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了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<=24)。

【输出】

输出文件matches.out共一行,表示能拼成的不同等式的数目。

【输入输出样例1】

2个等式为0+1=1和1+0=1。

【输入输出样例2】

9个等式为:

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

3. 传纸条

(wassage.pas/c/cpp)

【问题描述】

小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。

在活动进行中,小渊希望给小轩传递一张纸条,同时希望小轩给他回复。班里每个同学都可以帮他们传递,但只会帮他们一次,也就是说如果此人在小渊递给小轩纸条的时候帮忙,那么在小轩递给小渊的时候就不会再帮忙。反之亦然。

还有一件事情需要注意,全班每个同学愿意帮忙的好感度有高有低(注意:小渊和小轩的好心程度没有定义,输入时用0表示),可以用一个0-100的自然数来表示,数越大表示越好心。小渊和小轩希望尽可能找好心程度高的同学来帮忙传纸条,即找到来回两条传递路径,使得这两条路径上同学的好心程度只和最大。现在,请你帮助小渊和小轩找到这样的两条路径。

【输入】

输入文件message.in的第一行有2个用空格隔开的整数m和n,表示班里有m行n列(1<=m,n<=50)。

接下来的m行是一个m*n的矩阵,矩阵中第i行j列的整数表示坐在第i行j列的学生的好心程度。每行的n个整数之间用空格隔开。

【输出】

输出文件message.out共一行,包含一个整数,表示来回两条路上参与传递纸条的学生的好心程度之和的最大值。

【输入输出样例】

【限制】

30%的数据满足:1<=m,n<=10

100%的数据满足:1<=m,n<=50

4. 双栈排序

(twostack.pas/c/cpp)

【问题描述】

Tom最近在研究一个有趣的排序问题。如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序。

操作a

如果输入序列不为空,将第一个元素压入栈S1

操作b

如果栈S1不为空,将S1栈顶元素弹出至输出

序列

操作c

如果输入序列不为空,将第一个元素压入栈S2

操作d

如果栈S2不为空,将S2栈顶元素弹出至输出

序列

如果一个1~n的排列P可以通过一系列操作使

得输出序列为1,2,…,(n-1),n,Tom就称P是一个“可双栈排序排列”。例如(1,3,2,4)就是一个“可双栈排序序列”,而(2,3,4,1)不是。下图描述了一个将(1,3,2,4)排序的操作序列:

当然,这样的操作序列有可能有几个,对于上例(1,3,2,4),是另外一个可行的操作序列。Tom希望知道其中字典序最小的操作序列是什么。

【输入】

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

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

【输出】

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

【输入输出样例1】

【输入输出样例2】

【输入输出样例3】

【限制】

30%的数据满足:n<=10

50%的数据满足:n<=50

100%的数据满足:n<=1000

NOIP2008信息奥赛提高组试题与答案

NOIP2008信息奥赛提高组试题与答案(Pascal语言) 第14届信息学奥赛试题 单项选择 1. 在以下各项中,()不是操作系统软件。 A.Solaris B.Linux C.Sybase D.Windows Vista E.Symbian 2. 微型计算机中,控制器的基本功能是()。 A. 控制机器的各个部件协调工作 B.实现算数运算与逻辑运算 C.存储各种控制信息 D. 获取外部信息 E.存放程序和数据 3. 设字符串S=“Olympic”,S的非空字串的数目是()。 A.29 B.28 C.16 D.17 E.7 4. 完全2叉树有2*N-1的结点,则它的叶子结点数目是()。 A.N-1 B.2*N C.N D.2^N-1 E.N/2 5. 将数组{8,23,4,16,77,-5,53,100}中元素从大到小按顺序排序,每次可以交换任意两个元素,最少要交换()次。 A.4 B.5 C.6 D.7 E.8 6.设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈,出栈顺序为b,d,c,f,e,a那么栈容量至少该是() A.6 B.5 C.4 D.3 E.2 7.与十进制数28.5625相等的四进制数是() A.123.21 B.131.22 C.130.22 D.130.21 E.130.20 8.递归过程和函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。 A.队列 B.多维数组 C.线性表 D.链表 E.栈 9.TCP/IP 是一组构成互联网基础的网络协议,字面上包括两组协议:传输控制协议(TCP)和网际互联协议(IP)。TCP/IP协议把Internet网络系统描述成具有4个层次功能的网络模型,其中提供源节点和目的节点之间的信息传输服务,包括寻址和路由器选择等功能的是()。 A.链路层 B.网络层 C.传输层 D.应用层 E.会话层 10.对有序数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,等概率情况下,查找成功的平均查找长度(平均比较次数)是()。 A.35/11 B.34/11 C.33/11 D.32/11 E.34/10 11.下列关于图灵的说法正确的有()

noip2008提高组复赛试题

全国信息学奥林匹克联赛(NOIP2008)复赛 提高组 一、题目概览 二、提交源程序文件名 三、编译命令(不包含任何优化开关) 四、运行内存限制 注意事项: 1. 文件名(程序名和输入输出文件名)必须使用小写。 2. C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3. 全国统一评测时采用的机器配置为:CPU 1.9GHz,内存512M,上述时限以此配置为准。各省在自测时可根据具体配置调整时限。

1. 笨小猴 (wird.pas/c/cpp) 【问题描述】 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。 【输入】 输入文件word.in只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。【输出】 输出文件word.out共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”; 第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。 【输入输出样例1】 【输入输出样例1解释】 单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。 【输入输出样例2】 【输入输出样例2解释】 单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。

2008年NOIP联赛提高组初赛试题及答案

第十四届全国青少年信息学奥林匹克联赛初赛试题 (提高组Pascal语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、单项选择题(共10题,每题1.5分,共计15分。每题有且仅有一个正确答案)。 1.在以下各项中,( C )不是操作系统软件。 A.Solaris B.Linux C.Sybase D.Windows Vista E.Symbian 2.微型计算机中,控制器的基本功能是(A )。 A.控制机器的各个部件协调工作 B.实现算数运算与逻辑运算 C.存储各种控制信息D.获取外部信息E.存放程序和数据 3.设字符串S=“Olympic”,S的非空字串的数目是( C )。 A.29 B.28 C.16 D.17 E.7 4.完全二叉树有2*N-1的结点,则它的叶子结点数目是(C )。 A.N-1 B.2*N C.N D.2N-1 E.N/2 5.将数组{8,23,4,16,77,-5,53,100}中元素从大到小按顺序排序,每次可以交换任意两个元素,最少要交换( B )次。 A.4 B.5 C.6 D.7 E.8 原顺序:8 23 4 16 77 -5 53 100 现顺序:-5 4 8 16 23 53 77 100 变化:1 2 3 4 5 6 7 8 3 5 2 4 7 1 6 8 共六位需要变化所以最少6-1=5次 6.设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈,出栈顺序为b,d,c,f,e,a那么栈容量至少应该是( D )。 A.6 B.5 C.4 D.3 E.2 7.与十进制数28.5625相等的四进制数是(D ) A.123.21 B.131.22 C.130.22 D.130.21 E.130.20 十进制小数→二进制小数: 整数部分照常; 小数部分转换方法: (1)把十进制小数乘以2,得到积,把积的整数部分提出;(2)再用所得积的小数部分乘以2,得到积,把积的整数部分提出;(3)重复步骤2;(4)乘以2过程中提出的各个整数部分组成转换后的二进制小数。权的确定规则:最先提出的整数是二进制小数的最高位。 8.递归过程和函数调用时,处理参数和返回地址,通常使用一种称为(E )的数据结构。

编程基本之顺序查找(15题)

01:查找特定的值 ? ?提交 ?统计 ?提问 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。 输入 第一行包含一个正整数n,表示序列中元素个数。1 <= n <= 10000。 第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格 隔开。元素的绝对值不超过10000。 第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。 输出 若序列中存在x,输出x第一次出现的下标;否则输出-1。 样例输入

样例输出 02:输出最高分数的学生姓名 ? 描述 输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的 姓名。 输入 第一行输入一个正整数N(N <= 100),表示学生人数。接着输入N行,每行 格式如下: 分数姓名

分数是一个非负整数,且小于等于100; 姓名为一个连续的字符串,中间没有空格,长度不超过20。 数据保证最高分只有一位同学。 输出 获得最高分数同学的姓名。 样例输入 样例输出 来源 习题(13-1)

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

NOIP2008南海区普及组复赛模拟测试题

NOIP2008南海区普及组复赛模拟测试题㈠ (测试时间:2008年11月1日上午) 注意事项: 1.严格按照题目要求的格式进行输入、输出,否则严重影响得分。 2.题目测试数据有严格时间限制,超时不得分。 3.输入文件格式不用判错;输入输出文件名均已给定,不用键盘输入。 4.程序完成后,要按指定的提交文件名编译成EXE文件,评卷时以EXE文件为准。 5.选手要同时将EXE文件和源程序(PAS)提交。 6.全卷400分,三小时完成。 第一题奶牛式乘法 输入文件: cowmul.in 输出文件: cowmul.out 问题描述: 做厌了乘法计算题的贝茜,自创了一种新的乘法运算法则。在这套法则里,A*B等于一个取自A、一个取自B的所有数字对的乘积的和。比方说,123*45等于1*4 + 1*5 + 2*4 + 2*5 + 3*4 + 3*5 = 54。对于2个给定的数A、B(1 < = A, B < = 1,000,000,000),你的任务是,用新的乘法法则计算A*B 的值。 输入格式:输入文件只有一行,是2个用空格隔开的整数:A、B 输出格式:输出文件共一行,输出1个整数,即新的乘法法则下A*B的值 输入样例(cowmul.in): 123 45 输出样例(cowmul.out): 54 第二题晚餐队列安排 输入文件: dining.in 输出文件: dining.out 问题描述: 为了避免餐厅过分拥挤,FJ要求奶牛们分2批就餐。每天晚饭前,奶牛们都 会在餐厅前排队入内,按FJ的设想,所有第2批就餐的奶牛排在队尾,队伍的前 半部分则由设定为第1批就餐的奶牛占据。由于奶牛们不理解FJ的安排,晚饭前 的排队成了一个大麻烦。 第i头奶牛有一张标明她用餐批次D_i(1 < = D_i < = 2)的卡片。虽然所有N (1 < = N < = 30,000)头奶牛排成了很整齐的队伍,但谁都看得出来,卡片上的 号码是完全杂乱无章的。 在若干次混乱的重新排队后,FJ找到了一种简单些的方法:奶牛们不动,他 沿着队伍从头到尾走一遍,把那些他认为排错队的奶牛卡片上的编号改掉,最终

1.9编程基础之顺序查找(15题)

01:查找特定的值 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。 输入 第一行包含一个正整数n,表示序列中元素个数。1 <= n <= 10000。 第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格 隔开。元素的绝对值不超过10000。 第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。 输出 若序列中存在x,输出x第一次出现的下标;否则输出-1。 5 2 3 6 7 3 3 2

02:输出最高分数的学生姓名 查看 描述 输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的 姓名。 输入 第一行输入一个正整数N(N <= 100),表示学生人数。接着输入N行,每行格 式如下: 分数姓名 分数是一个非负整数,且小于等于100; 姓名为一个连续的字符串,中间没有空格,长度不超过20。 数据保证最高分只有一位同学。 输出 获得最高分数同学的姓名。 5 87 lilei 99 hanmeimei 97 lily 96 lucy 77 jim hanmeimei 来源 习题(13-1)

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

读程序写结果(精华版)

读程序写结果之基础篇 读程序写结果,大致可以考察学生几方面的能力:一是程序设计语言的掌握情况;二是相关算法的掌握情况;三是数学的知识面及运算能力;四是细心、耐心的心理品质。在NOIP 初赛中所占的分值,近几年一直维持在(4×8)分。对于参赛选手,又快又准地完成这类题,显得尤为重要。本系列文章将全面分析这类题的常用解题方法与技巧,敬请期待。 本讲,我们简要说明一下阅读程序写结果,或者说参与NOIP 初赛,要了解并掌握的一些语言基础(以Pascal 语言为例),以及解决此类型题目的最基本解法。 一、Pascal 相关知识备忘(以free Pascal 2.04为语言载体) 熟练掌握并灵活使用以下Pascal 语言相关知识: (一)、常用运算: 1、算术运算:+、-、*、/、DIV 、MOD 2、字符串运算:+ (字符串连接) 3、集合运算:+(并集)、*(交集)、一(差集)、in 2、关系运算:>、<、=、<>、>=、<= 3、逻辑运算:NOT 、AND 、OR 、XOR (二)、常用子程序 1、 求绝对值函数abs(x) 如:abs(3)返回值为3;abs(-3.1)返回值为:3.1 2、 取整函数int(x) 定义:function Int(X: Real): Real; 如 int(3.6)返回值为:3.0;int(-3.6)返回值为:-3.0 3、 截尾函数trunc(x) 定义:function Trunc(X: Real): Longint 如 trunc(3.6)返回值为:3;trunc(-3.6) 返回值为:-3 4、 四舍五入函数round(x) 如 R := round(123.456);{123} R := round(12.56);{13} R := round(-123.456);{-123} R := round(-12.56);{-13} 5、 取小数函数frac(x) 如R := Frac(123.456); { 0.456 }; R := Frac(-123.456); { -0.456 } 6、 求平方根函数sqrt(x)和平方函数sqr(x) 如:R := sqrt(4); { 2.0 }; R := sqr(4); { 16 } 7、 求以e 为底幂函数exp(x) : x e 8、 求以e 为底对数函数ln(x) : x e log 9、 随机数函数function random[(range:word)]: randomize 随机数初始化语句 random 返回)1,0[ 之间的随机实数 random(range) 返回),0[range 随机整数 10、 求字符x 对应序号函数ord(x) 如R := ord (‘A ’); { 65 } 11、 求序号x 对应字符函数chr(x) 如R := chr(65); { ‘A ’ } 12、 将字符串小写转换为大写函数upcase(st) 如R := upcase (‘AbcD ’); { ‘ABCD ’ } 13、 求前趋函数pred(x) 如R := pred (‘B ’); { ‘A ’ } 14、 求后继函数succ(x) 如R := succ (‘B ’); { ‘C ’ }

【精选资料】NOIP提高组复赛试题与简解转载

Day1 铺地毯 【问题描述】 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有n 张地毯,编号从1 到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。【输入】 输入文件名为 carpet.in。 输入共 n+2 行。 第一行,一个整数 n,表示总共有n 张地毯。 接下来的 n 行中,第i+1 行表示编号i 的地毯的信息,包含四个正整数a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标(a,b)以及地毯在x轴和y 轴方向的长度。 第 n+2 行包含两个正整数x 和y,表示所求的地面的点的坐标(x,y)。 【输出】 输出文件名为 carpet.out。 输出共 1 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出-1。 【输入输出样例 1】 【输入输出样例说明】 如下图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,覆盖点(2,2)的最上面一张地毯是3 号地毯。

【输入输出样例 2】 【输入输出样例说明】 如上图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,点(4,5)没有被地毯覆盖,所以输出-1。 【数据范围】 对于 30%的数据,有n≤2; 对于 50%的数据,0≤a, b, g, k≤100; 对于 100%的数据,有0≤n≤10,000,0≤a, b, g, k≤100,000。 【一句话题意】 给定n个按顺序覆盖的矩形,求某个点最上方的矩形编号。 【考察知识点】 枚举 【思路】 好吧我承认看到图片的一瞬间想到过二维树状数组和二维线段树。

NOIP完善程序真题(07-10)

NOIP2007提高组第一题格雷码 (Gray Code) Gray Code是一种二进制编码,编码顺序与相应的十进制数的大小不一致。其特点是,对于两个相邻的十进制数,对应的两个格雷码只有一个二进制位不同。另外,最大数与最小数间也仅有一个二进制位不同,以4位二进制数为例,编码如下: 十进制数格雷码十进制数格雷码 0 0000 8 1100 1 0001 9 1101 2 0011 10 1111 3 0010 11 1110 4 0110 12 1010 5 0111 13 1011 6 0101 14 1001 7 0100 15 1000 如果把每个二进制的位看做一个开关,则将一个数变为相邻的另一个数,只须改动一个开关。因此,格雷码广泛用于信号处理、数-模转换等领域。 下面程序的任务是:由键盘输入二进制的位数n(n<16),再输入一个十进制数m(0≤m<2n),然后输出对应于m的格雷码(共n位,用数组gr[ ]存放) program s501; var bound,m,n,i,j,b,p:integer; gr:array[0..14]of integer; begin bound:=1; writeln('input n,m'); readln(n,m); for i:=1 to n do bound:=[ ① ]; if (m<0)or(m>=bound) then begin writeln('Data error!'); [ ② ]; end; b:=1; for i:=1 to n do begin p:=0; b:=b*2; for[ ③ ] to m do if ([ ④ ]) then p:=1-p; gr:=p; end; for i:=n[ ⑤ ] do write(gr); writeln; end.

【noip2008年提高组题二】火柴棒等式

【noip2008年提高组题二】火柴棒等式 问题描述: 在火柴棒等式中,每个数字由若干火柴棒组成,要求组成一个等式。等式中有加号、等号和两个数字,它们之间各自由若干火柴棒连接起来。若干数字的顺序和下标之和相等,则等式成立。 已知通过7根火柴棒可以得到的合法的等式有12个,求合法 的所有等式。 解题思路: 本题为全排列问题的一个典型应用。根据题目给出的火柴棒等式的要求,遍历所有的7根火柴棒的全排列,验证是否能组成合法的火柴棒等式,并将符合条件的等式输出即可。以下为详细步骤: 1. 构建火柴棒数量列表,用于表示每个数字所需的火柴棒数量。列表的下标表示数字,列表的值表示火柴棒数量; 2. 生成7根火柴棒的全排列,并将每一个排列结果作为一个可能的等式; 3. 遍历所有可能的等式,判断是否符合题目要求:等式中有加号、等号和两个数字,它们之间各自由若干火柴棒连接起来。若干数字的顺序和下标之和相等,则等式成立; 4. 将符合条件的等式输出。 以下为Python代码实现: def dfs(total, cur): if cur == 7:

judge(total) return for i in range(10): if num[i] > 0: num[i] -= 1 dfs(total + ch[cur][i], cur + 1) num[i] += 1 def judge(total): for i in range(10): if num[i] != 0: return a, b, c = total[0], total[1], total[2] if a + b == c and a <= b: res.append(total) ch = [[6, 2, 5, 5, 4, 5, 6, 3, 7, 6] for _ in range(7)] num = [2, 5, 5, 4, 5, 6, 3, 7, 6, 6] res = [] dfs([], 0) for i in range(len(res)): print(f'{res[i][0]} + {res[i][1]} = {res[i][2]}') 在上述代码中,ch为火柴棒数量列表,num为每个数字所需 的火柴棒数量。dfs函数用于生成火柴棒等式的所有可能排列,judge函数用于验证等式是否成立,res为存储符合条件的等式

NOIP历年复赛提高组试题(2004-2021)

NOIP历年复赛提高组试题(2004-2021)

第十届全国信息学奥林匹克分区联赛(NOIP2004)复赛试题 (提高组竞赛用时:3小时) 1、津津的储蓄计划(Save.pas/dpr/c/cpp) 【问题描述】 津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。 例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。 津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月

初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。 现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。 【输入文件】 输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。 【输出文件】 输出文件save.out包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。 【样例输入1】 290 230

编程基础之顺序查找题

01:查找特定的值 • • • • 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个序列下标从1开始中查找一个给定的值,输出第一次出现的位置; 输入 第一行包含一个正整数n,表示序列中元素个数;1 <= n <= 10000; 第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔 开;元素的绝对值不超过10000; 第三行包含一个整数x,为需要查找的特定值;x的绝对值不超过10000; 输出 若序列中存在x,输出x第一次出现的下标;否则输出-1;

02:输出最高分数的学生姓名 • 描述 输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓 名; 输入 第一行输入一个正整数NN <= 100,表示学生人数;接着输入N行,每行格式如 下: 分数姓名 分数是一个非负整数,且小于等于100; 姓名为一个连续的字符串,中间没有空格,长度不超过20; 数据保证最高分只有一位同学; 输出 获得最高分数同学的姓名; 来源 习题13-1 03:不高兴的津津

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

1.9编程基础之顺序查找(15题)

01:查找特定的值 • •提交 •统计 •提问 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。 输入 第一行包含一个正整数n,表示序列中元素个数。1 <= n <= 10000。 第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格 隔开。元素的绝对值不超过10000。 第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。 输出 若序列中存在x,输出x第一次出现的下标;否则输出-1。

02:输出最高分数的学生姓名 • 描述 输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的 姓名。 输入 第一行输入一个正整数N(N <= 100),表示学生人数。接着输入N行,每行格 式如下: 分数姓名 分数是一个非负整数,且小于等于100; 姓名为一个连续的字符串,中间没有空格,长度不超过20。 数据保证最高分只有一位同学。 输出 获得最高分数同学的姓名。 来源 习题(13-1)

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

编程基础之顺序查找题之欧阳学创编

01:查找特定的值 • •查看 •提交 •统计 •提问 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个序列(下标从1开始)中查找一个给定的 值,输出第一次出现的位置。 输入 第一行包含一个正整数n,表示序列中元素个数。 1 <= n <= 10000。第二行包含n个整数,依次给出 序列的每个元素,相邻两个整数之间用单个空格隔 开。元素的绝对值不超过10000。第三行包含一个

整数x,为需要查找的特定值。x的绝对值不超过 10000。 输出 若序列中存在x,输出x第一次出现的下标;否则 输出-1。 样例输入 样例输出 02:输出最高分数的学生姓名 •查看 描述 输入学生的人数,然后再输入每位学生的分数和姓 名,求获得最高分数的学生的姓名。 输入

第一行输入一个正整数N(N <= 100),表示学生 人数。接着输入N行,每行格式如下:分数姓名分 数是一个非负整数,且小于等于100;姓名为一个 连续的字符串,中间没有空格,长度不超过20。 数据保证最高分只有一位同学。 输出 获得最高分数同学的姓名。 样例输入 样例输出 来源 习题(13-1) 03:不高兴的津津

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

NOIP历届习题(2000-2008)

2000年全国青少年信息学(计算机)奥林匹克分区联 赛复赛试题 (高中组竞赛用时:3小时) 题一进制转换 问题描述 我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所处位置的(值减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)

相关文档
最新文档