当前位置:文档之家› 小学生信息学奥赛模拟试题及思路(Qbasic)

小学生信息学奥赛模拟试题及思路(Qbasic)

小学生信息学奥赛模拟试题及思路(Qbasic)建立文件夹本次模拟赛的考号即为选手发送答案用的邮箱“@”符号之前的部分(例如,如果你用fx@这个邮箱发送答案,那么你的考号即为fx)。

请你用考号建立一个文件夹,并在这个文件夹中为本次竞赛的每个题目建立一个子文件夹,这些子文件夹的名字分别是:ARCH、RANK、QUEUE、HIDE、FOURCOL。

每建立一个正确的文件夹可以得到2分。

本部分共10分(不包括考号文件夹)。

提交答案时,请将每个题目的代码文件分别放入各自的文件夹中,放在其它位置不计分。

题目文件夹中,除了代码文件之外,请不要有其它文件。

将自己的考号文件夹压缩为rar格式后,将此rar文件作为附件发送到bjnoi@,主题请写“小学生模拟题答卷”,并请在邮件正文中写明如下信息:姓名、性别、年龄、学校、年级。

10:10前提交的答案有效。

本次模拟赛每个题目有10个测试点,每个测试点2分,每个题满分20分。

本次模拟赛满分110分。

注:本套题目难度等级(*:送分,**:容易,***:中等,****:较难,*****:难)阿基米德特性(*)至少该做对的题目:1,2,3应该做对的题目:1,2,3,4ARCH.BAS / ARCH.C / ARCH.CPP / ARCH.PAS【问题描述】所谓“阿基米德特性”是这样的一条性质:对任意两个整数、,保证,总存在整数,使得。

请编写一个程序,对输入的、,输出最小的。

【输入文件】文件名:ARCH.IN文件中只有两个整数、,且有。

【输出文件】文件名:ARCH.OUT文件中只有一个整数,表示使得的最小的整数。

【样例输入】2 9【样例输出】5思路:1. 选择结构实现,第二个数整除第一个数+1(见参考程序ARCH.BAS)2. 循环结构实现(while形式)m=1do while a*m<=bm=m+1loopprint m允许并列的排名(**)RANK.BAS / RANK.C / RANK.CPP / RANK.PAS【问题描述】在我们参加的各种竞赛中,允许并列的排名方式是经常遇到的。

例如有四名选手的成绩分别为50、80、50、30分,则80分的选手为第一名,50分的两名选手均为第二名,30分的选手为第四名。

请编写一个程序,计算一个选手在这种排名方式之下的名次(分数高的选手排前面)。

【输入文件】文件名:RANK.IN文件第一行为一个整数,表示参赛的选手数,,第二行为个整数,表示每位选手的成绩,第三行为一个整数,表示要查询名次的选手的成绩。

【输出文件】文件名:RANK.OUT文件中只有一个整数,表示该选手的名次。

【样例输入】450 80 50 3050【样例输出】2思路:本题由于要查找的数据在后面所以必须用数组来存储以前的数据。

1. 计数思想:IF A(I)>X THEN JS=JS+12. 排序+查找思想(冒泡排序+顺序查找到第一个,同时强迫退出)合唱队形(***)QUEUE.BAS / QUEUE.C / QUEUE.CPP / QUEUE.PAS【问题描述】茵茵所在的合唱队共有个人(为奇数)。

为了准备一次演出,老师开始为她们安排合唱队形了。

大家都知道,合唱队形通常是中间高两端低的。

老师是这样安排他们的队形的:先让所有的同学按高个儿在前的顺序排成一队。

然后,最高的那位同学单独站出来,这是合唱队形的中心,再让第二位同学站在她的左手边,让第三位同学站在她的右手边,再依次向两端安排其他人……事先给定所有人的身高,请输出她们站成合唱队形之后的身高顺序。

【输入文件】文件名:QUEUE.IN文件第一行是一个整数,表示合唱队的总人数,已知为奇数,且。

文件第二行是个整数,表示以厘米为单位的所有人的身高。

【输出文件】文件名:QUEUE.OUT文件中只有个整数,表示她们按老师的要求站成合唱队形之后的身高顺序。

【样例输入】154 160 157 162 159 152 163【样例输出】152 157 160 163 162 159 154思路:冒泡排序+输出重组(从小到大排序,重组原则:奇数部分+最后一个元素+偶数部分)注意:不要产生多余的空格。

隐藏的最大整数(****)HIDE.BAS / HIDE.C / HIDE.CPP / HIDE.PAS【问题描述】今天是个好日子,整数小伙伴们又一起出来聚会了。

大家商议决定:今天玩捉迷藏!玩法很简单,就是从所有人中找出一部分藏在一个长长的字符串中(任何两个人都不会并排藏在一起),而且,因为伙伴们太多,只找到此次藏起来的最大的那个伙伴就可以了。

并且,大家一致同意,让“1”做第一个找人的人——当然,事先,他并不知道到底有哪些伙伴藏起来了……游戏开始了。

“1”是一个很聪明的人,很快,他就把最大的那个伙伴找出来了……如果你是“1”,你能写个程序来解决这件事情么?【输入文件】文件名:HIDE.IN文件中只有一个字符串,这里面藏有很多的整数小伙伴。

【输出文件】文件名:HIDE.OUT文件中只有一个整数,表示藏在其中的最大的那个整数小伙伴的位置(整数第一个数字在原串中的位置)。

已知,所有的小伙伴都不会超过2000000000。

【样例输入】*((*-a32AB342+//32143abAA【样例输出】17【说明】这个串中共藏有32、342和32143三个小伙伴,其中32143是最大的,它在原来的串中的位置是17。

思路:本题类似集训课综合模拟测试一的附加题“计算加法”数的构造方法(参考ADD.BAS)步骤:1. 判断是否为数,如果为数则构造该数(k$=k$+x$)2. “打擂台求”最大值,同时跟踪位置信息,并减去该数的位数(回退)3. 注意如果最后一个数为最大的情况(如:12***))(3(34&&789,容易忽略789,所以处理方法是把原来串变为12***))(3(34&&789*,最后一个*可以是除数字以外的任何东东)4. 由于本题明确说明所有的小伙伴都不会超过2000000000。

所以必须定义LONG数据类型PS:为了保险凡是整数都定义为LONG,凡是实数都定义为:DOUBLE四色定理(*****)FOURCOL.BAS / FOURCOL.C / FOURCOL.CPP / FOURCOL.PAS【问题描述】著名的四色定理你一定听说过吧?这可是近代世界三大数学难题之一唷(顺便提上一句,另外两个是费马定理和哥德马赫猜想)。

四色定理的提出来自英国。

1852年,毕业于伦敦大学的弗南西斯·格思里(Francis Guthrie)在一家科研单位搞地图着色工作时,发现了一种有趣的现象:“看来,每幅地图都可以用四种颜色着色,使得有共同边界的国家着上不同的颜色。

”(注意:只要求有公共边的区域不同色就可以,只有公共顶点的同色也没关系)这个结论能不能从数学上加以严格证明呢?他和在大学读书的弟弟格里斯决心试一试。

兄弟二人为证明这一问题而使用的稿纸已经堆了一大叠,可是研究工作没有进展。

1852年10月23日,他的弟弟就这个问题的证明请教他的老师、著名数学家德·摩尔根,摩尔根也没有能找到解决这个问题的途径,于是写信向自己的好友、著名数学家哈密尔顿爵士请教。

哈密尔顿接到摩尔根的信后,对四色问题进行论证。

但直到1865年哈密尔顿逝世为止,问题也没有能够解决。

直到1976年,在J. Koch的算法的支持下,美国数学家阿佩尔(Kenneth Appel)与哈肯(Wolfgang Haken)在美国伊利诺斯大学的两台不同的电子计算机上,用了1200个小时,作了100亿判断,才终于完成了四色定理的证明。

你的任务相对那些数学家们来说当然要容易得多:你只要编写一个程序,计算一下在给定的一张有5个区域的地图上,用四种颜色填充不同区域,并保证有公共边的区域不同色的方案数有多少就可以了。

【输入文件】文件名:FOURCOL.IN文件第一行是一个整数(),分别表示地图中有公共边的区域的信息数量。

下面行,每行一对整数,表示对所有区域编号之后,此两个编号的区域是有公共边的。

【输出文件】文件名:FOURCOL.OUT文件中只有一个整数,表示用四种颜色填充地图的总方案数。

注意,在某些方案中,所有四种颜色不必都用到。

【样例输入】41 21 31 41 5【样例输出】324【说明】输入样例中的地图如下图所示:2 314 5【提高】如果这个题目中的区域数量不再是5个,而是个,你还能解决它么?请回去后仔细想想解决方案。

思路:本题对小学生来说很BT!难度:高三数学竞赛的内容。

本题由于明确说就5个国家,而每个国家只有1 ~ 4的情况,所以可以“暴力搜索”。

在搜索时要注意相邻两个国家的颜色应该不一样(计数),否则方案作废。

最后要判断相邻边数是否为n,方案计数(total=total+1).PS:如果考试中的某道题是这样的话,尽量做!!!(如果你是高手的话)如果还做不出来,那就用PFCL:>Open …Open …Input #1,nDim a(n)Dim b(n)For i=1 to nInput #1,a(i),b(i)Next iPrint #2,“324”END。

相关主题