青少年信息学奥林匹克初级竞赛辅导练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一题(p236)
问题描述:将键盘输入的字符串中所有的十进制数找出来,并求它们的和。输入:APPLE 25, PEAR 125
屏幕输出:25+125=150
输入:THIS IS A BOOK
屏幕输出:0
第二题(p236)
问题描述:求n!(n!=l×2×3×4×5×…×n)的精确值(n≤25 )。
输入:n=11
屏幕输出:n!=39916800
第三题(p236)
问题描述;当输入正整数N时(0 输入:N=3 屏幕输出: 6 3 1 0 5 2 00 4 输入:N=5 屏幕输出: 15 10 6 3 1 0 14 9 5 2 0 0 13 8 4 0 0 0 12 7 0 0 0 0 11 1.编-程序,由计算机随机产生十道10以内整数四则运算题,运算符由计算机随机产生,每做对-题加10分,并输出“GOOD"。做完后,输出对几题、错几题以及总分是多少。(p233) 说明:变量A, B为运算数,变量C为运算符代码。 2.输入一个正整数X,然后与它的倒序排列的数相加,求其结果。(p234) 例如:正整数238,其倒序排列的数为832,其结果为238+832=1070。 P28练习 [例2]报数游戏(NOIP-TJ-2006小学组复赛题)。(p30) 小朋友都喜欢做游戏,今天就教大家一个游戏。游戏规则非常简单,基本描述如下: 假设有n个小朋友玩这个游戏,那么我们把所有的人从1到n都逐一编好号码,以便游戏的开始。n个同学根据自己的编号按照顺时针顺序站成一个圈。如下图(以10人为例): 1 10 2 9 3 8 4 7 5 6 现在从编号1的小朋友开始按照顺时针的方向报数,报数的规则是,我们只做1﹀2报数,也就是报完1再报2,然后再报1,再报2......。当有人报数报到2时,此人就输掉了游戏,必须离开,当某个人离开游戏后,大家仍然保持相对的位置继续报数,直到只有1个人剩下时才停止,这个人就是游戏的胜利者。我们由上图(以10人为例),可以得到依次离开游戏的顺序:2, 4, 6, 8, 10, 3, 7, 1, 9。最后胜利者为编号是5的小朋友。 经过几次游戏,聪明的小明感觉到了其中是有规律的,他猜测如果已知参与游戏的人数,那么这个胜利者编号就是固定的,但是他却没有计算出来到底谁会赢得游戏。现在请你来帮助小明去计算到底谁是游戏的胜利者。 每组数据都会告诉你参与这个游戏的人数n,并且n不会超过1000。请你对于每组数据都输出那个胜利者的编号。 〔样例输入1] 4 f样例输出1) 1 (解释:离开游戏的顺序是:2, 4, 3。所以说剩下的编号为1的是胜利者。) 〔样例输入2〕 10 〔样例输山2〕 5 (p34) (p34) (p34) (p34) (p34) (p34) p40 【例4】产生整数序列。 编程按递增顺序产生序列{M}中最小的100个整数。{M}定义如下: 1)整数1属于{M}; 2)如果x属于{M},则y=2x+1, y=3x+1也属于{M}; 3)除了上述两个条件外,再无其他整数属于{M}. 分析:显然整数序列{M}是按递推定义的。现在要按递增顺序产生序列{M}中最小的100个整数。首先把数1放入到{M}中,然后按y=2x+1, y=3x+1产生两个数放置到序列的后面,按递增顺序排列。 由于按表达式y=2x+1产生的数放置的位置可能不符合要求,使用插入排序法能很快调整递增顺序。在使用插入排序时,从后往前依次把数据后移,空出位置放置刚产生的整数。当发现新产生的数与序列中原有的某数相等时,要把原来后移的数据移回原处。 p41 〔例5〕数的计数(NOIP-2001)。我们要求找出具有下列性质的数的个数(包含输入的自然数n): 先输入一个自然数n (n ≤ 1000),然后对此自然数按照如下方法进行处理:1.不作任何处理; 2.在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3.加上数后,继续按此规则进行处理,直到不能再加自然数为止。 样例,输入:6 输出:6 即满足条件的数有6个(以下部分不必输出)。 6 16 26 126 36 136 [p56] 【例2】从下列国家名称中找到以J打头的国家名称: China,Japan,America,India,Laos, DATA China,Japan,America,India,Laos P101 (2)用随机函数产生num个(1≤num≤100)9.17到917之间的实数(保留小数点后两位),并存放在数组x中,然后将前n个数颠倒排放。 (3)对随机产生的100个0到50之间的随机整数用一个数组存放后进行排序,然后再将其中重复出现的数进行删除,只保留一个,使得剩下的数中任何两个都不相同且连续存储在原数组中(2002年江苏年江苏省小学生组试题)。 (4)我们将左右对称的自然数称为回文数,例如:121, 4114等;将只能被1与其本身整除的自然数称为素数,例如:7, 353等。键入N,M,求出N至M(含N与M)之间既是回文数又是素数的自然数共有多少个,(2002年江苏省小学组试题) (5)随机产生100个1到100之间的整数,在其中查找某个数,并输出其所在位置。 (6)从键盘输入一个正整数n,计算并输出比n小并且与n互素的数的个数。(两个数互素是指它们的最大公约数等于1。)