NOIP2003普及组复赛试题
noip普及组复赛模拟试题10答案
【试题描述】选拔考试即将开始,同学们陆续进入考场,哇,考场好大啊。
究竟star应该坐在哪张位置呢?考场门口贴了一张考场座位(m*n)明细表,其中考场里的有些位置是坏的不能坐,考号为1的同学的座位号是第一排第一列,即他的座位是1、1,2号同学的座位是1、2,以此类推,当然,如果某个座位是坏的,那么这个同学就往后延一个座位,后面的同学再依次排下去。
考场座位肯定够所有考生坐。
【输入描述】第1行:3个整数,m,n,k(m,n表示考场的座位是m行n列,k表示star的考号)m,n<=100;第2..m+1行:每行n个数代表考场明细0代表座位是好的,1代表座位是坏的)【输出描述】一行:两个整数代表star应该坐的位置【输入样例】4 4 50 0 0 00 0 1 00 0 0 10 0 0 0【输出样例】2 1【试题来源】常州长训班测试program ex1661;var k,i,j,s,m,n:integer;a:array[1..100,1..100] of 0..1;beginreadln(m,n,k);for i:=1 to m dofor j:=1 to n doread(a[i,j]);s:=0;for i:=1 to m dofor j:=1 to n dobeginif a[i,j]<>1 then inc(s);if s=k then begin writeln(i,' ',j); exit;end;end;end.输入 6 6 70 0 0 0 1 00 0 1 0 0 00 0 0 1 1 00 0 0 0 0 11 0 0 0 0 00 0 1 0 0 1 输出 2 2输入8 6 100 0 0 0 1 00 0 1 0 0 00 0 0 1 1 00 0 0 0 0 11 0 0 0 0 00 0 1 0 0 10 1 0 0 0 01 0 0 0 0 1输出 2 6【题目描述】一个农夫有n(n≤1000)头奶牛,可由于产奶太少,他决定把当天产奶最少的牛杀掉,但他有点舍不得,如果当天不只一头奶牛产奶,至少他便放过它们。
NOIP普及组历届试题分析
对于100%的数据,3 ≤ n ≤ 100 测验题给出的正整数大小不超过10,000。
试题分析
题意大意:给你n个数,在这n个数中,找 到满足A+B=C的C的个数,注意不是这个 等式的个数。
样例中,1,2,3,4有1+2=3,1+3=4两个。
由于本题数据规模n<=100,我们可以直接
枚举C, A, B,三层循环解决问题。
扫雷游戏 (noip2015普及组第二题)
输入样例 1 33 *?? ??? ?*? 输入样例 2 23 ?*? *??
输出样例 1 mine.out *10 221 1*1 输出样例 2 mine.out 2*1 *21
对于 100%的数据,1≤n≤100,1≤m≤100
问题分析:
本题也是简单的枚举类试题。 我们从雷区的第一行第一列(1,1)开始,判断它周围 有多少个地雷。 由于本题读入的是字符,读入时需要注意: readln(n,m); for i=1 to n do begin for j=1 to m do read(a[i][j]); readln; end;
比例简化 (noip2014普及组第二题)
在社交媒体上,经常会看到针对某一个观点同意与 否的民意调查以及结果。例如,对某 一观点表示 支持的有 1498 人,反对的有 902 人,那么赞同与 反对的比例可以简单的记为1498:902。 不过,如果把调查结果就以这种方式呈现出来,大 多数人肯定不会满意。因为这个比例的数值太大, 难以一眼看出它们的关系。对于上面这个例子,如 果把比例记为 5:3,虽然与 真实结果有一定的误差, 但依然能够较为准确地反映调查结果,同时也显得 比较直观。 现给出支持人数 A,反对人数 B,以及一个上限 L, 请你将 A 比 B 化简为 A’比 B’,要求在 A’和 B’均 不大于 L 且 A’和 B’互质(两个整数的最大公约数 是 1)的前提下,A’/B’ ≥ A/B 且 A’/B’ - A/B 的值 尽可能小。
字符串习题!9
1、笨小猴(08年提高组第1题)(word.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】单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。
【输入输出样例2】单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。
2.ISBN号码(08年普及组第1题)(isbn.pas/c/cpp)【问题描述】每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。
ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。
noip普及组复赛模拟试题8(答案)
Description 给定整数n(32位以内),判断它是否为2的方幂。
是就输出'yes',否则输出'no'。
Input 一个整数n。
Output 一个字符串Sample Input 4Sample Output yesHintn > 0 && ( ( n & ( n - 1 ) ) == 0貌似是数学问题,套用了提示program ex1560;var n:longint;beginreadln(n);if (n>0) and (n and (n-1)=0) then write('yes') else write('no'); end.输入 127 输出 NO 输入 262144 输出 YES 输入 68719476736 输出 YES问题描述:计算机软件版本通常被用来区分某种软件在不同时间的发布。
大部分软件版本号都是用“.”分隔的非负数的序列。
对两个不同的版本A = a1.a2.a3…an和B = b1.b2.b3…bm,如果下面两个条件之一成立,我们认为版本A要比版本B新:1.对某个i,我们有:对所有j < i, ai > bi 和aj = bj;2.n比m大,而且对所有i < m, ai = bi。
(ai和bi都不超过LONGINT)在这个问题里,你要对给定的一组版本号,按照上面的定义从旧到新排序。
输入文件(VERSIONS.IN):输入文件第一行是一个整数N(N<=20),表示要排序的版本数。
接下来的N行每行一个版本号。
每个版本号是长度不超过50的字符串。
输出文件(VERSIONS.OUT):将排好序的结果以每行一个版本号输出。
输入输出样例:VERSIONS.IN43.0.512.42.4.6VERSIONS.OUT12.42.4.63.0.5var n,i:integer;scan:array [1..30] of string;function check(aa,bb:string):boolean;vara,b:longint;i,j:integer;code:integer;beginaa:=aa+'.'; bb:=bb+'.';i:=pos('.',aa); j:=pos('.',bb);while (i>0) and (j>0) do beginval(copy(aa,1,i-1),a,code);val(copy(bb,1,j-1),b,code);if a<b then exit(true);if a>b then exit(false);delete(aa,1,i);delete(bb,1,j);i:=pos('.',aa);j:=pos('.',bb);end;if (i=0) and (j>0) then exit(true) else exit(false); end;procedure qsort(l,r:integer);vari,j:integer;t:string;beginif l>=r then exit;i:=random(r-l)+l;t:=scan[i];scan[i]:=scan[l];i:=l;j:=r;repeatwhile (i<j) and (check(t,scan[j])) do dec(j);if i=j then break; scan[i]:=scan[j];while (i<j) and (check(scan[i],t)) do inc(i);if i=j then break; scan[j]:=scan[i];until i=j;scan[i]:=t;qsort(l,i-1);qsort(i+1,r);end;beginreadln(n);for i:=1 to n do readln(scan[i]); qsort(1,n);for i:=1 to n do writeln(scan[i]); end.输入73.0.5.11.02.22.2.62.2.83.0.5.43.0 输出1.02.22.2.62.2.83.03.0.5.13.0.5.4输入1211.0.21.0.36.23.43.4.222.12.1.43.4.14.24.2.2输出 11.0.21.0.322.12.1.43.43.4.13.4.24.24.2.26.2输入正整数N、M,求N÷M的值。
(信息学奥赛辅导)排列与组合基础知识
排列与组合基础知识有关排列与组合的基本理论和公式:加法原理:做一件事,完成它可以有n 类办法,在第一类办法中有m 1种不同的方法,在第二类中办法中有m 2种不同的方法,……,在第n 类办法中有m n 种不同方法。
那么完成这件事共有N=m 1+m 2+…+m n 种不同的方法,这一原理叫做加法原理。
乘法原理:做一件事,完成它需要分成n 个步骤,做第一步有m 1种不同的方法,做第二步有m 2种不同的方法,……,做第n 步有m n 种不同的方法,那么完成这件事共有N =m 1×m 2×…×m n种不同的方法,这一原理叫做乘法原理。
公式:阶乘公式!(1)(2)321n n n n =⋅-⋅-⋅⋅,规定0!=1;全排列公式!n n P n = 选排列公式!(1)(2)(1)()!m n n P n n n n m n m =---+=-、m m m n n m P C P = 圆排列:n 个不同元素不分首位围成一个圆圈达到圆排列,则排列数为:!(1)!n n n =- 组合数公式(1)(2)(1)!!!()!m mn n m m P n n n n m n C P m m n m ---+===-、规定01n C = m n m n n C C -=、11m m m n n n C C C -+=+、0122n n n n n n C C C C ++++=)提示:(1)全排列问题和选排列问题,都可根据乘法原理推导出来。
(2)书写方式:r n P 记为P (n,r );r n C 记为C (n,r )。
加法原理例题:图1中从A 点走到B 点共有多少种方法?(答案:4+2+3=9)乘法原理例题:图2中从A 点走到B 点共有多少种方法?(答案:4×6=24)加法原理与乘法原理综合:图3、图4中从A 走到B 共有多少种方法?(答案:28、42) A B 图1 A B图2A B 图3 A B图4注意:在信息学奥赛中,有许多只需计数而不需具体方案的问题,都可以通过思维转换或方法转换,最后变为两类问题:一类是转变为排列组合问题,另一类是转变为递推公式问题。
NOIP复赛普及组模拟题4
普及组
模拟赛
题目概况
题目名称 输入文件名 输出文件名 提交程序名 每个测试点时限
空间限制
晴天小猪历险记 hill.in hill.out hill.* 1秒 128M
卡布列克圆舞曲 kblk.in kblk.out kblk.* 1秒 128M
山峰暸望 mount.in mount.out mount.*
山的宽度定义为在这个山上进行的测量的次数(也就是序列的长度)。请帮 Bessie 找到最宽的山。
这是一个比较典型的地平线的例子:
*******
*
*********
***
**********
*****
***********Leabharlann **********
*
*****************
***********
*** *
** ******************* ************* * * *******
*
*********************************************************************
321111233367777777654333211111234445676543211121211111234323211111121
输入格式 第一行有一个数 n(2<=n<=1000),表示山的高度。 从第二行至第 n+1 行,第 i+1 行有 i 个数,每个数表示晴天小猪在这一段山
路上需要爬的时间。 输出格式
一个数,即晴天小猪所需要的最短时间。 样例输入 5 1 23 456 10 1 7 8 11456 样例输出 10
noip普及组复赛入门测试(答案+测试数据)
一、新龟兔赛跑(文件名xgtsp.pas)新龟兔赛跑比赛即将举行,此次龟兔赛跑比赛的规则与以往有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是考察谁在规定时间内跑的路程更长,且兔子和乌龟跑步都是匀速的。
由于兔子的坏习惯,它总喜欢把比赛的总时间T小时中的K小时拿来睡觉。
现在给你比赛的总时间T、兔子的睡觉时间K、兔子的速度U、乌龟的速度V,需要你求出该次比赛谁最后获胜。
输入第一行为一个整数X,表示有X组输入数据。
每组数据只有一行,包括4个数T、K、U、V (1 ≤ T≤ 300,0 ≤ K ≤ T,1 ≤ U ≤ 100,1 ≤ V ≤ 100)。
对于每组数据,输出只有一个数,如果兔子获胜则输出-1,如果乌龟获胜则输出1,如果同时到达则输出0。
允许输入一组数后立即输出对应的结果。
样例输入:21 12 16 2 6 3样例输出:1-1varv,u,t,k,n,i:integer;beginreadln(n);for i:=1 to n do beginreadln(t,k,u,v);if v*t>U*(t-k) then writeln(1);if v*t<U*(t-k) then writeln(-1);if v*t=U*(t-k) then writeln(0);end;end.1、输入:26 2 6 28 6 8 2输出:-12、输入:2300 280 60 20120 0 12 13输出:113、输入:3100 20 50 30100 50 45 25100 80 27 17输出:-1114、输入:3150 77 29 23127 11 22 13139 22 13 7输出:1-1-1二、小球路程(文件名:XQLC.PAS )已知小球从100米高度自由下落,落地后反弹起,又落地,又弹起,……。
每次弹起的高度都是上一次高度的一半。
求小球第N次反弹起的高度和球在整个过程所经过的路程(包括下落和反弹),用键盘输入N,输出反弹高度和经过路程,结果保留两位小数。
NOIP模拟1
NOIP普及组复赛模拟题1.冰壶比赛(curling.pas/c/cpp)【问题描述】在冰壶比赛中,给出一个目标点P,以及一个规定的正整数r。
每一局由甲乙两队轮流投冰壶各8次后,该局比赛结束。
此时,哪一方的冰壶最终离目标点P更近,该方得分,另一方不得分。
得分方每颗离目标点P距离小于或等于r、位置较另一队所有冰壶都更接近目标点P的冰壶都可以得1分。
比赛最多进行10局。
双方之间的某局比赛结束后,落后一方可以弃权。
此时,比赛不再进行下去。
已知每一局结束时,双方的每个冰壶离目标点P的距离,以及正整数r,请你写一个程序判断两队之间每一局比赛的得分,以及总得分。
【输入格式】第一行只有一个正整数r。
以下有若干行(不超过20行),除了最后一行外,每一行有8个正整数(互相之间以一个空格分隔)。
第2行的第j个数表示第1局比赛结束时,甲方的第j个冰壶距离目标点P的距离;第3行的第j个数表示第1局比赛结束时,乙方的第j个冰壶距离目标点P的距离;第4行的第j个数表示第2局比赛结束时,甲方的第j个冰壶距离目标点P的距离;第5行的第j个数表示第2局比赛结束时,乙方的第j个冰壶距离目标点P的距离;… …第2k行的第j个数表示第k局比赛结束时,甲方的第j个冰壶距离目标点P的距离;第2k+1行的第j个数表示第k局比赛结束时,乙方的第j个冰壶距离目标点P的距离;如果有一方中途弃权,则最后一行(偶数行)只有一个整数-1,表示此时发生弃权情况。
【输出格式】有若干行,每行有二个整数,中间以一个冒号分隔,表示每一局比赛甲乙双方的比分(甲得分在前);最后一行有二个整数,中间以一个冒号分隔,表示甲乙双方比赛的最终得分(甲【数据限制】70%的数据,双方均不弃权,比赛进行10局。
100%的数据,每只冰壶距离目标点P的距离不超过100。
2.分数统计(count.pas/c/cpp)【问题描述】学校为了控制作业量,实施“轻负担,高质量”的有效教学,对所有在校学生的作业量情况进行了调查。
NOIP普及组复赛试题
P1909 买铅笔题目描述P教师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。
她发觉商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价钱也有可能不同。
为了公平起见,P教师决定只买同一种包装的铅笔。
商店不许诺将铅笔的包装拆开,因此P教师可能需要购买超过n支铅笔才够给小朋友们发礼物。
此刻P教师想明白,在商店每种包装的数量都足够的情形下,要买够至少n支铅笔*最少*需要花费多少钱。
输入输出格式输入格式:输入的第一行包括一个正整数n,表示需要的铅笔数量。
接下来三行,每行用两个正整数描述一种包装的铅笔:其中第一个整数表示这种包装内铅笔的数量,第二个整数表示这种包装的价钱。
保证所有的7个数都是不超过10000的正整数。
输出格式:输出一行一个整数,表示P教师最少需要花费的钱。
输入输出样例输入样例#1:输出样例#1:输入样例#2:说明铅笔的三种包装别离是:•2支装,价钱为2;•50支装,价钱为30;•30支装,价钱为27。
P教师需要购买至少57支铅笔。
若是她选择购买第一种包装,那么她需要购买29份,共计2x29 = 58支,需要花费的钱为2x29 = 58。
事实上,P教师会选择购买第三种包装,如此需要买2份。
尽管最后买到的铅笔数量更多了,为30x2 = 60支,但花费却减少为27 x2 = 54,比第一种少。
关于第二种包装,尽管每支铅笔的价钱是最低的,但要够发必需买2份,实际的花费达到了30 x 2 = 60,因此P教师也可不能选择。
因此最后输出的答案是54。
【子任务】子任务会给出部份测试数据的特点。
若是你在解决题目中碰到了困难,能够尝试只解决一部份测试数据。
每一个测试点的数据规模及特点如下表:上表中“整倍数”的意义为:假设为“K”,表示对应数据所需要的铅笔数量n—定是每种包装铅笔数量的整倍数(这意味着必然能够不用多买铅笔)。
P2020 回文日期题目描述在日常生活中,通过年、月、日这三个要素能够表示出一个唯一确信的日期。
NOI2003试题day2
第二十届全国青少年信息学奥林匹克竞赛NOI2003第二试有关附加文件的信息,请参看具体的题目说明。
数据生成器【题目背景】小明在做NOI2003练习赛的《幸福的老鼠》时觉得题目太简单了,于是对原题做了一些扩展:●将原题的N从20扩展到200000。
●将原题经过一条街道需要的时间改为Ti(1 £ Ti £ 1000000000)分钟(i为街道的编号)。
●增加了一个条件:小狗家Y离老鼠家X的距离小于等于大狗家Z离老鼠家X的距离。
即使这样,他仍然很快地做了出来。
于是,小明打算做一些输入文件来测试他的程序。
现在他已经生成了一些符合题意的图,不过为了增大测试数据的难度,他希望你能帮他选取一组X、Y、Z,使老鼠拿到礼物的时间尽可能地大。
【小明扩展的题目(注意,你并不需要解决此题)】幸福的老鼠Jerry要过生日了,小狗大狗分别送了它一份生日礼物。
现在Jerry打算从自己家X出发,先到小狗家Y(因为小狗家Y离老鼠家X的距离小于等于大狗家Z离老鼠家X的距离),再到大狗家Z,将两份礼物取回。
卡通城由N(3 £ N £ 200000)个居住点和N-1条连接居住点的双向街道组成,经过第i 条街道需花费Ti(1 £ Ti £ 1000000000)分钟的时间。
可以保证,任两个居住点间都存在通路。
不妨设Jerry家在点X,小狗家在点Y,大狗家在点Z。
现在,请你计算,Jerry最快需要耗费多长时间才能拿到生日礼物?【任务描述】定义:令|AB|表示卡通城中从A点走到B点需要的最少时间。
给出卡通城的地图,找到一组X、Y、Z,使得:|XY|≤|XZ||XY|+|YZ|最大。
并求出此时|XY|+|YZ|的值。
【输入文件】输入文件jerrygen.in第一行是两个整数N(3 £ N £ 200000)和M(M=N-1),分别表示居住点总数和街道总数。
从第2行开始到第N行,每行给出一条街道的信息。
noip普及组复赛答案
noip普及组复赛答案【篇一:noip普及组复赛入门测试(答案+测试数据)】class=txt>新龟兔赛跑比赛即将举行,此次龟兔赛跑比赛的规则与以往有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是考察谁在规定时间内跑的路程更长,且兔子和乌龟跑步都是匀速的。
由于兔子的坏习惯,它总喜欢把比赛的总时间t小时中的k小时拿来睡觉。
现在给你比赛的总时间t、兔子的睡觉时间k、兔子的速度u、乌龟的速度v,需要你求出该次比赛谁最后获胜。
输入第一行为一个整数x,表示有x组输入数据。
每组数据只有一行,包括4个数t、k、u、v (1 ≤ t≤ 300,0 ≤ k ≤ t,1 ≤ u ≤ 100,1 ≤ v ≤ 100)。
对于每组数据,输出只有一个数,如果兔子获胜则输出-1,如果乌龟获胜则输出1,如果同时到达则输出0。
允许输入一组数后立即输出对应的结果。
样例输入:21 12 16 2 6 3样例输出:1-1varv,u,t,k,n,i:integer;beginreadln(n);for i:=1 to n do beginreadln(t,k,u,v);if v*tu*(t-k) then writeln(1);if v*tu*(t-k) then writeln(-1);if v*t=u*(t-k) then writeln(0);end;end.1、输入:26 2 6 28 6 8 2输出:-12、输入:2300 280 60 20120 0 12 13输出:113、输入:3100 20 50 30100 50 45 25100 80 27 17输出:-1114、输入:3150 77 29 23127 11 22 13139 22 13 7输出:1-1-1二、小球路程(文件名:xqlc.pas )已知小球从100米高度自由下落,落地后反弹起,又落地,又弹起,??。
每次弹起的高度都是上一次高度的一半。
noip03 普及组《栈》详解
NOIP 2003 普及组试题《栈的计数》解题报告山西省实验中学郝嘉收稿日期:2022年4月25日编者按:本文十分详细的介绍了《栈的计数》这题的两种递推算法,图文并茂,十分适合初学者阅读,并从中领会清晰、严密的分析思路。
另外,随文附带的程序十分简洁,值得学习。
作为普及组的试题,出题者的意图可能仅仅希望考察选手对搜索和递推算法的掌握,但是,本题作为组合数学Catalan数的经典模型,可以用组合数学的方法快捷高效的求解。
类似的利用Catalan数求解的问题有NOI2001福建组队赛《球迷购票问题》等,类似的递推问题还有NOI2000福建组队赛《车皮排序问题》等,希望有能力的同学继续研究。
摘要:算法一算法二算法三算法递推递推Catalan数时间复杂度O(n2) O(n2) O(n)空间复杂度O(n) O(n2) O(1)问题转述:求一列共n辆的火车按顺序通过一个栈所产生的排列总数。
分析:这一类组合计数题目显然不能用搜索的方法把所有可能的移动方案都穷举出来再统计总数──这样做时间复杂度极大。
这道题与经典的HANOI问题很相似,所以应当根据问题本身的性质,利用组合数学的原理,将原问题转化为递归形式,找到计算总数的递归方程,再进行计算。
算法一:我们不妨直接设n辆火车产生的排列总数为f(n)。
看看能不能找到一些规律。
如图,n列火车通过栈,起始车头在车列最前端。
经过移动后,车头处在了第a+1位,车头前有a辆车,车头后有b辆车(a>=0,b>=0)。
则n=a+b+1,b=n-a-1。
若要达到上述移动目的,步骤为:(1)将车头进栈;(2)将车头后a辆车依次通过栈,移至轨道另一端;(3)将车头出栈,则车头恰好排在第a+1位;(4)将轨道右端剩余b辆车依次通过栈,移至轨道另一端;不难证明,移动方案仅此一种。
问题是每个步骤又有许多种不同的移动方法。
显然步骤(1)(3)各只有一种移动方法。
仔细观察步骤(2)(4)。
1995-2008 历届NOIP试题及详解
a 输入:N=5 B=(0,0,0,0,0)
输出: A=(4,3,2,1,0)
b 输入:N=10 B=(0,1,2,3,4,5,6,7,8,9)
输出: A=(0,1,2,3,4,5,6,7,8,9)
c 输入:N=7 B=(0,0,0,0,4,5,6)
R
Y Y
P2=B R N2R=2
Y
P3=Y R N3=R1
Y
Q
RR
Y
排列方案: 排列总数: 105×2=210
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y BB
① 输10入5×2=210 3 4R 4 R4 4R 3 4 B B
1 2R 2 R2 2R 2 1 3B B
应打印出完整的图形R:(R12 分R)
BB
15 1R6 1R6 1R5 4 B B
Y Y Y Y Y
7 8 R 8R 8 R 7 7
BB
Y
3 4 R4 R4 R4 3 4 B B
Y
1 2 2R 2 R 2 R 2 1
19 18 17 16 15 14 13 12 11 10 <3> 本题 14 分
NOIP2003普及组(复赛)
NOIP2003普及组复赛试题题一、乒乓球(Table.pas)【问题背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。
其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。
华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。
在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。
【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):WWWWWWWWWWWWWWWWWWWWWWLW在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。
而在21分制下,此时比赛结果是华华第一局21比0获胜,正在进行第二局,比分2比1。
如果一局比赛刚开始,则此时比分为0比0。
你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。
【输入格式】每个输入文件包含若干行字符串(每行至多20个字母),字符串有大写的W、L和E组成。
其中E表示比赛信息结束,程序应该忽略E之后的所有内容。
【输出格式】输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。
其中第一部分是11分制下的结果,第二部分是21分制下的结果,两部分之间由一个空行分隔。
【输入样例】WWWWWWWWWWWWWWWWWWWWWWLWE【输出样例】11:011:01:121:02:1题二、数字游戏(Game.pas)【问题描述】丁丁最近沉迷于一个数字游戏之中。
这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。
游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。
noip普及组复赛模拟试题26(答案)
noip普及组复赛模拟试题26(答案)1.数字反转(revere.cpp/c/pa)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。
新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
【输入】输入文件名为revere.in。
输入共1行,一个整数N。
【输出】输出文件名为revere.out。
输出共1行,一个整数,表示反转后的新数。
【输入输出样例1】revere.inrevere.out123321【输入输出样例2】Revere.inrevere.out-380-83【数据范围】-1,000,000,000≤N≤1,000,000,000。
var3,1,2:tring;n,i:integer;beginaign(input,'revere.in');reet(input);aign(output,'revere.out');rewrite(output);read(1);n:=length(1);if1[1]='-'thenbegin2:='-';fori:=1ton-1do1[i]:=1[i+1];delete(1,n,1);end;n:=length(1);fori:=1tondo3:=3+1[n-i+1];i:=1;while(3[i]='0')and(length(3)>1)dodelete(3,1,1);write(2+3);cloe(input);cloe(output);end.2.统计单词数(tat.cpp/c/pa)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。
NOIP历年复赛提高组试题
全国信息学奥林匹克分区联赛(NOIP)复赛提高组试题第一届全国信息学奥林匹克分区联赛(NOIP1995)复赛试题(提高组竞赛用时:3.5小时)1、编码问题设有一个数组A:ARRAY[0..N-1]OFINTEGER;数组中存放的元素为0~N-1之间的整数,且A[i]≠A[j](当i≠j时)。
例如:N=6时,有:A=(4,3,0,5,1,2)此时,数组A的编码定义如下:A[0]的编码为0;A[i]的编码为:在A[0],A[1],…,A[i-1]中比A[i]的值小的个数(i=1,2,…,N-1)∴上面数组A的编码为:B=(0,0,0,3,1,2)程序要求解决以下问题:①给出数组A后,求出其编码。
②给出数组A的编码后,求出A中的原数据。
2、灯的排列问题设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,……N k(k表示不同颜色灯的个数)。
放灯时要遵守下列规则:①同一种颜色的灯不能分开;②不同颜色的灯之间至少要有一个空位置。
例如:N=8(格子数);R=2(红灯数);B=3(蓝灯数),放置的方法有:R-B顺序B-R顺序放置的方法总数为12种。
数据输入的方式为:NP1(颜色,为一个字母)N1(灯的数量)P2 N2……Q(结束标记,Q本身不是灯的颜色)程序要求:求出一种顺序的放置(排列)方案及放置(排列)方案总数。
3、积木块上的数字设有一个四层的积木块,1~4层积木块的数量依次为:5,6,7,8,如下图所示放置:其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。
计算的方法是:第三层的某个数据A是由第四层相邻的两个数据B,C经过某种计算后产生的:计算所用到的计算符为:+,-,⨯,且无优先级之分(自左向右计算),运算符最多为2个。
如:3+4⨯5=35 5⨯4+3=23可以看出,上图中的第三层的数据是由第四层的数据用以下计算公式计算出来的:A=B⨯C+B也就是:8=2⨯3+2,15=3⨯4+3,……14=2⨯6+2程序要求:给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据,并输出整个完整的积木图及计算公式。
noip普及组复赛模拟试题6答案
计算机发明之前,数学家们需要手工进行数学计算。
遇到复杂计算往往要花去大量时间,而且正确率也不高。
现在可不一样了,有了计算机人们能快速而正确地求解数学问题。
小雪是个中学生,可已经能熟练的运用计算机编写程序了。
为了提高自己的计算机水平,小学经常将数学老师布置的题目用计算机加以求解。
有一次,数学老师提出这样一个问题:对于给定的一对自然数m 与n )(n m 在m 与n 之间(包含m 和n )有多少素数呢?小雪很快得出了答案。
现在请你也编写程序实现。
(1不为素数)输入:文件的第一行为一个数k ,表示有k 对自然数。
以后k 行每行有两个自然数,第一个自然数为m ,第二个自然数为n 。
输出:依次输出每一对数之间的素数个数。
每个结果占一行。
例如:输入:21 510 20输出:34var n,i,s,x,y,j,t,h:longint;begin read(n);for i:=1 to n dobegin readln(x,y);h:=0;for t:=x to y dobegin s:=0;for j:=1 to t doif t mod j=0 then s:=s+1;if s=2 then h:=h+1;end;writeln(h);end;end.输入35 20输出6100 200 输出21500 1000 输出73当前有面值分别为a 分,b 分,c 分,d 分(a>b>c>d=1)的硬币,请给出找n 分钱的最佳方案(要求找出的硬币数目最少)输入:a,b,c,d,n输出:硬币各几个例:输入:25 10 5 1 36输出:25 10 5 11 1 0 1又例:输入:10 8 5 1 13输出: 10 8 5 10 1 1 0var a,b,c,d,min,s,n,t,a1,a2,a3,a4,b1,b2,b3,b4:integer;beginreadln(a,b,c,d,n);min:=9999;for a1:=0 to n div a dofor a2:=0 to n div b dofor a3:=0 to n div c dofor a4:=0 to n div d dobegint:=a1+a2+a3+a4;s:=a1*a+a2*b+a3*c+a4*d;if (s=n)and(t<min) then beginmin:=t;b1:=a1;b2:=a2;b3:=a3;b4:=a4;end;end;writeln(a:5,b:5,c:5,d:5);writeln(b1:5,b2:5,b3:5,b4:5)readln;end. 输入100 35 20 12 271输出100 35 20 122 1 0 3输入80 65 42 35 453 输出80 65 42 351 1 4 4在下面的算式中每个“#”都表示一个素数数字。
NOIP2003第九届普及组试题及答案
第九届全国青少年信息学奥林匹克联赛初赛试题(普及组PASCAL语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分,共30分)1.下列计算机设备中,既是输入设备,又是输出设备的是( )。
A)键盘B)触摸屏C)扫描仪D)投影仪E)数字化仪2.下列分辨率的显示器所显示出的图像,最清晰的是( )。
A)800*600 B)1024*768 C)640*480 D)1280*1024 E)800*10003.下列说法中,正确的是( )。
A)在内存中,可执行程序用二进制码表示,源程序用八进制表示。
B)程序和数据在内存中都是用二进制码表示的。
C)内存中数据的存取是以二进制位为单位的。
D)中央处理器CPU执行的每条指令的长度都不同。
E)一般来说,在计算机内部,中文信息用十六进制表示,英文信息用八进制表示。
4.下列说法中,错误的是( )。
A)程序是指令的序列,它有三种结构:顺序、分支和循环。
B)地址总线决定了中央处理器CPU所能访问的最大内存空间的大小。
C)中央处理器CPU内部有寄存器组,用来存储数据。
D)不同厂家生产的CPU所能处理的指令集不一定相同。
E)数据传输过程中不可能会出错。
5.CPU访问内存的速度比访问下列哪个存储设备要慢( )。
A)寄存器B)硬盘C)软盘D)磁带E)光盘6.下列电子邮件地址,正确的是( )。
A)wang@ B)cai@jcc.pc.tool@.jpC)162.105.111.22 D)E)http://7.数字图像文件可以用下列哪个软件来编辑( )。
A)画笔(Paintbrush) B)记事簿(Notepad) C)RecorderD)WinRAR E)MidiSoft8.下列哪个软件不是操作系统软件的名字( )。
A)Windows XP B)DOS C)Linux D)OS/2 E)Arch/Info9.下列哪个不是个人计算机的硬件组成部分( )。
排列与组合基础知识
排列与组合基础知识有关排列与组合的基本理论和公式:加法原理:做一件事,完成它可以有n 类办法,在第一类办法中有m 1种不同的方法,在第二类中办法中有m 2种不同的方法,……,在第n 类办法中有m n 种不同方法。
那么完成这件事共有N =m 1+m 2+…+m n 种不同的方法,这一原理叫做加法原理。
乘法原理:做一件事,完成它需要分成n 个步骤,做第一步有m 1种不同的方法,做第二步有m 2种不同的方法,……,做第n 步有m n 种不同的方法,那么完成这件事共有N =m 1×m 2×…×m n 种不同的方法,这一原理叫做乘法原理。
公式:阶乘公式!(1)(2)321n n n n =⋅-⋅-⋅⋅,规定0!=1;全排列公式!n n P n = 选排列公式!(1)(2)(1)()!m n n P n n n n m n m =---+=-、m m m n n m P C P = 圆排列:n 个不同元素不分首位围成一个圆圈达到圆排列,则排列数为:!(1)!n n n =- 组合数公式(1)(2)(1)!!!()!m mn n m m P n n n n m n C P m m n m ---+===-、规定01n C = m n m n n C C -=、11m m m n n n C C C -+=+、0122n n n n n n C C C C ++++=)提示:(1)全排列问题和选排列问题,都可根据乘法原理推导出来。
(2)书写方式:r n P 记为P (n,r );rn C 记为C (n,r )。
加法原理例题:图1中从A 点走到B 点共有多少种方法?(答案:4+2+3=9)乘法原理例题:图2中从A 点走到B 点共有多少种方法?(答案:4×6=24)加法原理与乘法原理综合:图3、图4中从A 走到B 共有多少种方法?(答案:28、42)A B 图1 A B图2A B 图3A B 图4注意:在信息学奥赛中,有许多只需计数而不需具体方案的问题,都可以通过思维转换或方法转换,最后变为两类问题:一类是转变为排列组合问题,另一类是转变为递推公式问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四.运行内存限制 内存上限
128M
128M
注意事项:
g++ -o stack stack.cpp -lm gcc-o stack stack.c -lm fpc stack.pas
128M
g++ -o mason mason.cpp -lm gcc -o mason
mason.c -lm fpc mason.pas
game game game.in
stack stack stack.in
mason mason mason.in
table.out 1秒 10
game.out 1秒 10
stack.out 1秒 10
mason.out 1秒 10
10 有
传统
10
10
10
有
有
有
全文比较(过滤行末空格及文末回车)
格式】输入文件第一行有两个整数,n(1≤n≤50)和 m(1≤m≤9)。以下 n 行 每行有个整数,其绝对值不大于 104,按顺序给出圈中的数字,首尾相接。
【输出格式】输出文件有两行,各包含一个非负整数。第一行是你程序得到的最小值, 第二行是最大值。
【输入样例】 42 4 3 -1 2
【问题描述】
输出序列
尾端
1 23
头端 操作数序列
头端
栈A
宁宁考虑的是这样一个问题:一个操作数序列,从 1,2,一直到 n(图示为 1 到 3 的情 况),栈 A 的深度大于 n。
现在可以进行两种操作, 1.将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的 push 操作) 2. 将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的 pop 操作) 使用这两种操作,由一个操作数序列就可以得到一系列的输出序列,下图所示为由 1 2 3 生成序列 2 3 1 的过程。(原始状态如上图所示)
例如,对于下面这圈数字(n=4,m=2):
2
4
-1
3
当要求最小值时,((2-1) mod 10)×((4+3) mod 10)=1×7=7,要求最大值时,为((2+4+3) mod 10)×(-1 mod 10)=9×9=81。特别值得注意的是,无论是负数还是正数,对 10 取模的 结果均为非负值。
【输出样例】 7 81
3、栈(stack.cpp/c/pas)
【问题背景】栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删 除操作的线性表。
栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈)。 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本 概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。
传统
传统
二.提交源程序文件名
对于 C++语言 table.cpp
对于 C 语言
table.c
对于 pascal 语言 table.pas
game.cpp game.c
game.pas
stack.cpp stack.c stack.pas
mason.cpp mason.c
mas o n .p as
三.编译命令(不包含任何优化开关)
【输入样例】 WWWWWWWWWWWWWWWWWWWW WWLWE
【输出样例】 11:0 11:0 1:1
21:0 2:1
2、数字游戏(game.cpp/c/pas)
【问题描述】丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了 许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在 你面前有一圈整数(一共 n 个),你要按顺序将其分为 m 个部分,各部分内的数字相加,相 加所得的 m 个结果对 10 取模后再相乘,最终得到一个数 k。游戏的要求是使你所得的 k 最 大或者最小。
【输入格式】 文件中只包含一个整数 P(1000<P<3100000)
【输出格式】 第一行:十进制高精度数 2P-1 的位数。 第 2-11 行:十进制高精度数 2P-1 的最后 500 位数字。(每行输出 50 位,共输出 10 行, 不足 500 位时高位补 0) 不必验证 2P-1 与 P 是否为素数。
128M
1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值 必须是 0。 3、全国统一评测时采用的机器配置为:CPU Intel Core2 Quad Q8200 2.33GHz,内存 2G,上
述时限以此配置为准。 4、特别提醒:评测在 NOI Linux 下进行。
【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后 分别计算在 11 分制和 21 分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中 W 表示华华获得一分,L 表示华华对手获得一分): WWWWWWWWWWWWWWWWWWWWWWLW 在 11 分制下,此时比赛的结果是华华第一局 11 比 0 获胜,第二局 11 比 0 获胜,正在 进行第三局,当前比分 1 比 1。而在 21 分制下,此时比赛结果是华华第一局 21 比 0 获胜, 正在进行第二局,比分 2 比 1。如果一局比赛刚开始,则此时比分为 0 比 0。 你的程序就是要对于一系列比赛信息的输入(WL 形式),输出正确的结果。
【问题描述】形如 2P-1 的素数称为麦森数,这时 P 一定也是个素数。但反过来不一定, 即如果 P 是个素数,2P-1 不一定也是素数。到 1998 年底,人们已找到了 37 个麦森数。最大 的一个是 P=3021377,它有 909526 位。麦森数有许多重要应用,它与完全数密切相关。
任务:从文件中输入 P(1000<P<3100000),计算 2P-1 的位数和最后 500 位数字(用十 进制高精度数表示)
23
3
2
3
1 2
2 1
23
1 231
3
1
1
你的程序将对给定的 n,计算并输出由操作数序列 1,2,…,n 经过操作可能得到的输 出序列的总数。
【输入格式】 输入文件只含一个整数 n(1≤n≤18)
【输出格式】
输出文件只有一行,即可能输出序列的总数目
【输入样例】 3
【输出样例】 5
4、麦森数(mason.cpp/c/pas)
CCF 全国信息学奥林匹克联赛(NOIP2003)复赛
普及组
(请选手务必仔细阅读本页内容)
一.题目概况 中文题目名称
英文题目与子目录名 可执行文件名 输入文件名 输出文件名 每个测试点时限 测试点数目 每个测试点分值 附加样例文件 结果比较方式 题目类型
乒乓球
数字游戏
栈
麦森数
table table table.in
对于 C++语言 g++ -o table g++ -o game
table.cpp -lm game.cpp -lm 对于 C 语言 gcc -o table gcc -o game
table.c -lm
game.c -lm
对于 pascal 语言 fpc table.pas fpc game.pas
【输入格式】每个输入文件包含若干行字符串(每行至多 20 个字母),字符串有大写的 W、L 和 E 组成。其中 E 表示比赛信息结束,程序应该忽略 E 之后的所有内容。
【输出格式】输出由两部分组成,每部分有若干行,每一行对应一 局比赛的比分(按比 赛信息输入顺序)。其中第一部分是 11 分制下的结果,第二部分是 21 分制下的结果,两部 分之间由一个空行分隔。
【输入样例】 1279
【输出样例】 386 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000104079321946643990819252403273640855 38615262247266704805319112350403608059673360298012 23944173232418484242161395428100779138356624832346 49081399066056773207629241295093892203457731833496 61583550472959420547689811211693677147548478866962 50138443826029173234888531116082853841658502825560 46662248318909188018470682222031405210266984354887 32958028878050869736186900714720710555703168729087
1、乒乓球(table.cpp/c/pas)
【问题背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动 乒乓球运动在全球的普及。其中 11 分制改革引起了很大的争议,有一部分球员因为无法适 应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明 白 11 分制和 21 分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的 统计数据进行一些分析,所以需要你的帮忙。