收藏 分享(赏)

noip普及组赛前冲刺资料.doc

上传人:weiwoduzun 文档编号:2868539 上传时间:2018-09-29 格式:DOC 页数:50 大小:1,014.23KB
下载 相关 举报
noip普及组赛前冲刺资料.doc_第1页
第1页 / 共50页
noip普及组赛前冲刺资料.doc_第2页
第2页 / 共50页
noip普及组赛前冲刺资料.doc_第3页
第3页 / 共50页
noip普及组赛前冲刺资料.doc_第4页
第4页 / 共50页
noip普及组赛前冲刺资料.doc_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、1数组一、数字数组ex1_1_1.pas级数求和(NOIP2002)【题目描述】已知:Sn=1+1/2+1/3+1/n。显然对于任意一个数 K,当 n.足够大的时候,Sn 大于K。 现给出一个整数 K(1K15),要求计算出一个最小的 n,使得 SnK 【输入】一行,一个整数 K【输出】一行,一个整数 n【输入样例】1【输出样例】2ex1_1_2.pas陶陶摘苹果(NOIP2005)【题目描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10 个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 30 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。 现在已知 10

2、个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。【输入】两行数据。第一行包含 10 个 100 到 200 之间(包括 100 和 200)的整数(以厘米为单位)分别表示 10 个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个 100 到 120 之间(包含 100 和 120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。【输出】一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。【输入样例】100 200 150 140 129 134 167 198 200

3、 111110【输出样例】5ex1_1_3.pas数字统计(NOIP2010)【题目描述】请统计某个给定范围L, R的所有整数中,数字 2 出现的次数。比如给定范围2, 22,数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出现 1 次,在数 21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6 次。【输入】共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。【输出】共 1 行,表示数字 2 出现的次数。2【输入样例】2 22【输出样例】6【输入输出样例 2】2 100【输出】20【数据范围】1 L R 10000。ex

4、1_1_4.pas狐狸追兔子【题目描述】围绕着山顶有 m 个洞(mb,结果存放在C数组中。procedure jia( a,b:arr; var c:arr);var i,len:integer;beginfillchar(c,sizeof(c),0);if a0b0 then len:=a0 else len:=b0;for i:=1 to len do beginci:=ai+bi;ci+1:=ci div 10; /进位ci:=ci mod 10;end;if clen+10 then inc(len);c0:=len;end;procedure jian( a,b:arr; var c

5、:arr);var i,len:integer;beginfillchar(c,sizeof(c),0);len:=a0;for i:=1 to len do beginif ai0 then inc(len);c0:=len;end;plusReadln(x);For i:=1 to length(x) doAi:=ord(xlength(x)-i+1)-48;A0:=length(X);93高精度乘以单个数x(010 then beginAi+1:=ai+1+ai div 10; /进位处理Ai:=ai mod 10;End;While alen+10 do beginLen:=len+1

6、;If alen10 then beginAlen+1:=alen div 10;Alen:=alen mod 10;End;End;End;procedure cheng2(a,b:arr; var c:arrvar i,j,len:longint;beginfillchar(c,sizeof(c),0);for i:=1 to a0 dofor j:=1 to b0 do beginci+j-1:=ci+j-1+ai*bj;ci+j:=ci+j+ci+j-1 div 10;ci+j-1:=ci+j-1 mod 10;end;len:=a0+b0;while (len1) and (clen

7、=0) do len:=len-1;c0:=len;end;10ex2_1.pas麦森数(NOIP2003)【题目描述】形如 2P-1 的素数称为麦森数,这时 P 一定也是个素数。但反过来不一定,即如果 P 是个素数,2 P-1 不一定也是素数。到 1998 年底,人们已找到了 37 个麦森数。最大的一个是P=3021377,它有 909526 位。麦森数有许多重要应用,它与完全数密切相关。任务:输入 P(1000P3100000),计算 2P-1 的位数和最后 500 位数字(用十进制高精度数表示)【输入】只包含一个整数 P(1000P3100000)【输出】第一行:十进制高精度数 2P-1

8、 的位数。第 2-11 行:十进制高精度数 2P-1 的最后 500 位数字。(每行输出 50 位,共输出 10 行,不足 500 位时高位补 0)不必验证 2P-1 与 P 是否为素数。【输入样例】1279【输出样例】3860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040793219466439908192524032736408553861526224726670480531911235040360805

9、967336029801223944173232418484242161395428100779138356624832346490813990660567732076292412950938922034577318334966158355047295942054768981121169367714754847886696250138443826029173234888531116082853841658502825560466622483189091880184706822220314052102669843548873295802887805086973618690071472071055

10、5703168729087ex2_2.pasHanoi 双塔问题(NOIP2007)【题目描述】给定 A,B,C 三根足够长的细柱,在 A 柱上放有 2n 个中间有空的圆盘,共有 n 个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为 n=3 的情形)。现要将这些圆盘移到 C 柱上,在移动过程中可放在 B 柱上暂存。要求: (1)每次只能移动一个圆盘; (2) A、B、C 三根细柱上的圆盘都要保持上小下大的顺序; 任务:设 An 为 2n 个圆盘完成上述任务所需的最少移动次数,对于输入的 n,输出 An。 11【输入】一个正整数 n,表示在 A 柱上放有 2n 个圆盘

11、。【输出】仅一行,包含一个正整数,为完成上述任务所需的最少移动次数 An。【输入样例】1【输出样例】2【输入输出样例 2】 2 【输出】6 【限制】对于 50%的数据, 10 do inc(lcm,x);end;function prime (n: integer): Boolean;var I: integer;beginprime:=true;for I:=2 to trunc(sqrt(n) doif n mod I=0 then beginprime:=false; break;end;end;procedure sushu(n);vari,j:longint;f:array1n of

12、 boolean;beginfillchar(f,sizeof(f),true);f1:=false;for i:=2 to trunc(sqrt(n) doif fi thenfor j:=2 to n div i dofi*j:=false;end;13ex3_1.pas最大公约数与最小公倍数(NOIP2001)【题目描述】二个正整数 x0,y0(2x0100000,2y01000000),求满足下列条件的 P,Q 的个数。 条件: 1.P,Q 是正整数; 2.要求 P,Q 以 x0 为最大公约数,以 y0 为最小公倍数。 试求:满足条件的所有可能的两个正整数的个数。【输入】输入 x0 和

13、 y0【输出】满足条件的所有可能的两个正整数的个数【输入样例】3 60【输出样例】4【提示】样例说明:此时的 P Q 分别为: 3 60 15 12 12 15 60 314排序算法对a数组进行从小到大的排序1.快速排序:2.选择排序:3. 冒泡排序procedure qsort(l,r:integer);var i,j,mid:integer;begini:=l;j:=r; mid:=a(l+r) div 2; 将当前序列在中间位置的数定义为中间数repeatwhile aimid do dec(j);在右半部分寻找比中间数小的数if ij;if laj then begintemp:=ai

14、; ai:=aj;aj:=temp;end;end;procedure bubble_sort;var i,j,temp:integer;beginfor i:=1 to n-1 dofor j:=1 to n-i doif ajla)or(jlb);if i0 then write(I, );end.16ex4_1.pas校门外的树(NOIP2005)【题目描述】某校大门外长度为 L 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 L 的位置;数轴上的每个整数点,即 0,1,2,L,都种有一棵树。 由于马路上有一些区

15、域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。 【输入】第一行有两个整数 L(1 amid then i:=mid+1elsej:=mid-1;until ij;binsearch:=i;end;23进制转换TypeArr:array1maxlen of integer;说明:除十进制外的其余进制存放在a数组中。1、十进制数x转二进制除2取余法2、任意正整数x转化成n进制除n取余3、n进制转换为十进制正整数

16、x(x在longint范围内)Procedure shi_zhuan_er(x:longint;var a:arr);Var i:longint;BeginFillchar(a,sizeof(a),0);I:=0;While x0 do beginI:=i+1;Ai:=x mod 2;X:=x div 2;End;a0:=i; /转化后的数倒着存放在 a 数组中。End;Procedure shi_zhuan_n(x,n:longint;var a:arr);Var i:longint;BeginFillchar(a,sizeof(a),0);I:=0;While x0 do beginI:=

17、i+1;Ai:=x mod n;X:=x div n;End;a0:=i; /转化后的数倒着存放在 a 数组中。End;procedure n_zhuan_shi(n:longint;a:arr;var x:longint);var i,y:longint;beginy:=1;x:=a1;for i:=2 to a0 do beginy:=y*n;x:=x+y*ai;end;end; 24ex5_1.pas数制转化【题目描述】设有一个字符串 A$的结构为: A$=mp;其中 m 为数字串(长度8;其意义为:将 10 进制数 48,转换成 8 进制数输出。【输入说明】一行,即一个满足 A$条件的

18、字符串【输出说明】一行,转化后的数字【输入样例】488【输出样例】60【数据范围】m以及转化过程和转化后的数据都在0,2000000000内。0n16 0p9ex5_2.pas数列(NOIP2006)【题目描述】给定一个正整数 k(3k15),把所有 k 的方幂及所有有限个互不相等的 k 的方幂之和构成一个递增的序列,例如,当 k=3 时,这个序列是:1,3,4,9,10,12,13,(该序列实际上就是:3 0,3 1,3 0+31,3 2,3 0+32,3 1+32,3 0+31+32,)请你求出这个序列的第 N 项的值(用 10 进制数表示)。例如,对于 k=3,N=100,正确答案应该是

19、 981。【输入】只有 1 行,为 2 个正整数,用一个空格隔开:k N(k、N 的含义与上述的问题描述一致,且 3k15,10N1000。【输出】一个正整数(在所有的测试数据中,结果均不超过 2.1*109)。(整数前不要有空格和其他符号)。【输入样例】3 100【输出样例】98125贪心法概念:根据每次所得到的局部最优解,推导出全局最优解或最优目标。ex6_1.pas【07NOIP 普及组】纪念品分组【题目描述】元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组

20、纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。 你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。 【输入】含 n+2 行: 第 1 行包括一个整数 w,为每组纪念品价格之和的上限; 第 2 行为一个整数 n,表示购来的纪念品的总件数; 第 3-n+2 行每行包含一个正整数 Pi(52-3-1 和 1-3-2-1,共两种。【输入】共一行,有两个空格隔开的整数 n,m(3=n=30, 3=m=30)。【输出】共一行,有一个整数,表示符合题意的方法数。【输入样例】3 3【输出样例】2【提示】40%的数据满足:3=

21、n=30,1=m=20100%的数据满足:3=n=30,1=m=30ex7_5.pas数的记数(NOIP2001)【题目描述】我们要求找出具有下列性质数的个数(包含输入的自然数 n): 先输入一个自然数 n(n1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3.加上数后,继续按此规则进行处理,直到不能再加自然数为止。【输入】输入 n【输出】数的个数【输入样例】6【输出样例】6【提示】样例说明: 这 6 个数是: 6、16 、26、126 、36 、13630递归ex8_1.pas自然数的拆分问题【问题描述】任何

22、一个大于 1 的自然数 n,总可以拆分成若干个小于 n 的自然数之和,输入自然数n(1=n=40) ,输出其拆分后的加法算式,要求输出时第一位加数按从小到大递增的顺序输出。【输入样例】7【输出样例】1+61+1+51+1+1+41+1+1+1+31+1+1+1+1+21+1+1+1+1+1+11+1+1+2+21+1+2+31+2+41+2+2+21+3+32+52+2+33+4ex8_2.pas2 的幂次方【问题描述】任何一个正整数都可以用 2 的幂次方表示.例如:137=27+23+20同时约定次方用括号来表示,即 ab 可表示为 a(b)。由此可知,137 可表示为:2(7)+2(3)+2(0)进一步:7=22+2+20 (21 用 2 表示);3=2+20;所以最后 137 可表示为: 137=2(2(2)+2+2(0)+2(2+2(0)+2(0)。又如:1315=210+28+25+2+1;所以 1315 最后可表示:1315=2(2(2+2(0)+2)+2(2(2+2(0)+2(2(2)+2(0)+2+2(0)输入:正整数(n20000)输出:符合约定的 n 的 0,2 表示(在表示中不能有空格) 【样例输入】137【样例输出】137=2(2(2)+2+2(0)+2(2+2(0)+2(0)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报