已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
读程序写结果之基础篇读程序写结果,大致可以考察学生几方面的能力:一是程序设计语言的掌握情况;二是相关算法的掌握情况;三是数学的知识面及运算能力;四是细心、耐心的心理品质。在NOIP初赛中所占的分值,近几年一直维持在(48)分。对于参赛选手,又快又准地完成这类题,显得尤为重要。本系列文章将全面分析这类题的常用解题方法与技巧,敬请期待。本讲,我们简要说明一下阅读程序写结果,或者说参与NOIP初赛,要了解并掌握的一些语言基础(以Pascal语言为例),以及解决此类型题目的最基本解法。一、 Pascal相关知识备忘(以free Pascal 2.04为语言载体)熟练掌握并灵活使用以下Pascal语言相关知识:(一)、常用运算:1、算术运算:+、*、DIV、MOD2、字符串运算:+ (字符串连接)3、集合运算:+(并集)、*(交集)、一(差集)、in2、关系运算:、=、=、=3、逻辑运算:NOT、AND、OR、XOR(二)、常用子程序 1、 求绝对值函数abs(x) 如:abs(3)返回值为3;abs(-3.1)返回值为:3.12、 取整函数int(x) 定义:functionInt(X:Real):Real;如 int(3.6)返回值为:3.0;int(-3.6)返回值为:-3.03、 截尾函数trunc(x) 定义:functionTrunc(X:Real):Longint如 trunc(3.6)返回值为:3;trunc(-3.6) 返回值为:-34、 四舍五入函数round(x)如 R:=round(123.456);123 R:=round(12.56);13 R:=round(-123.456);-123 R:=round(-12.56);-135、 取小数函数frac(x)如R:=Frac(123.456);0.456; R:=Frac(-123.456);-0.4566、 求平方根函数sqrt(x)和平方函数sqr(x) 如:R:=sqrt(4);2.0; R:=sqr(4);167、 求以e为底幂函数exp(x) : 8、 求以e为底对数函数ln(x) : 9、 随机数函数function random(range:word):randomize 随机数初始化语句random 返回 之间的随机实数random(range) 返回随机整数10、 求字符x对应序号函数ord(x) 如R:=ord(A);6511、 求序号x对应字符函数chr(x) 如R:=chr(65);A12、 将字符串小写转换为大写函数upcase(st) 如R:=upcase(AbcD);ABCD13、 求前趋函数pred(x) 如R:=pred(B);A14、 求后继函数succ(x) 如R:=succ(B);C15、 判断x是否为奇数函数odd(x) 如R:=odd(7);TRUE; 如R:=odd(8);FALSE16、 字符转换为数值过程val(str,a,b)如,执行语句val(2.4,a,b); 后,a值为:2.4 执行语句val(2c4,a,b); 后,a为:0,b为:217、 数值转换为字符过程Str(a,st)如,执行语句str(12, st); 后,st值为:12 18、 求字串st长度函数length(st) 如R:=length(ABC);319、 函数Pos(st1,st):查找st1在st里的起始位置,整型。如R:=pos(cd,abcde”); 320、 函数Copy(st,a,b):提取st里第a个位置的b个字符。如R:=copy(abcdef,2,3);bcd21、 过程Delete(st,a,b):删除st中第a个位置的b个字符如,执行语句:st=abcdef; delete(st,2,3);后,st值为:aef22、 过程Insert(st1,st,a):把st1插入st的第a个位置中如,执行语句:st=abcdef; insert(xy,st,3);后,st值为:abxycdef23、 过程Fillchar(x,y,a) :按字节填充。常用Fillchar(a,sizeof(a),0)对数组的所有元素进行清零。24、 过程Inc(i) 使i:=i+1;Inc(I,b) 使I:=I+b;25、 过程dec(i) 使i:=i-1; dec(I,b) 使I:=I-b;26、 EOF:判断当前打开的文件是否已到文件尾 27、 EOLN:判断是否为行尾(三)、位运算1、 SHR:x SHR n 把x换成二进制后向右移n位2、 SHL:x SHL n 把x换成二进制后向左移n位3、 and :位与。(1可视为真;0为假)。在其它领域可用符号、表示。4、 or :位或。在其它领域可用符号、+表示5、 xor:位异或。在其它领域可用符号表示6、 not:按位取反。在其它领域可用符号表示例:Var i,j:byte;begin i:=10; (10)10= (0000 1010)2 j:=12; (12)10= (0000 1100)2 writeln(i shr 2); (0000 1010)2向右移两位,高位补零:(0000 0010)2,输出2 writeln(i shl 2); (0000 1010)2向左移两位,低位补零:(0010 1000)2,输出40writeln(i and j); (0000 1010)2 (0000 1100)2=(0000 1000)2 ,输出8 writeln(i or j); (0000 1010)2 (0000 1100)2=(0000 1110)2,输出14 writeln(i xor j); (0000 1010)2 (0000 1100)2=(0000110)2 ,输出6 writeln(not i); (0000 1010)2 =(1111 0101)2,输出245 end.(四)、几个语句及几个符号1、 break:退出循环2、 continue:直接回到循环体顶部执行3、 exit:退出当前子程序。若是主程序,结束运行。4、 halt:结束运行,回到操作系统5、 记录的定义及使用、开域语句with6、 指针的定义与使用: :定义指向某类型的指针变量,该变量存放内存地址。 取出该变量存放的内存地址所指向内存变量的值 :取变量的内存地址。常用于对指针变量赋值。这些最基本的语言基础,是“读程序写结果”的立根之本。只有熟练掌握这些语言基础,才能看懂与之相关的程序。二、 基本解法NOIP初赛“读程序写结果”有比较多的基础题,特别是近三四年,经常出现。这类题,只要在了解语言,特别是了解以上介绍的这些基础知识,再通过“人脑模拟程序”的方式,进行简单的数学运算,就可以得出答案。考查的是选手对语言基础的掌握情况,以及计算的细心与耐心。以下,选例讲解:选例一 NOIP2008提高组第一题var i,a,b,c,d:integer; f:array0.3 of integer;begin解答过程如下: for i:=0 to 3 dof0f1f2f3 read(fi);9192939 a := f0 + f1 + f2 + f3;a=9+19+29+39=96 a := a div f0;a=96 div 9=10 b := f0 + f2 + f3;b=9+29+39=77 b := b div a;b=77 div 10=7 c := (b * f1 + a) div f2;c=(7*19+10) div 29=4 d := f(b div c) mod 4;d=f77 div 4 mod 4=f2=19 if (f(a + b + c + d) mod 4 f2) thenf(10+7+4+19) mod 4=f0 beginf0=929=f2 条件不成立 a := a + b; writeln(a); end else begin c := c + d;c=4+19=23 writeln(c);输出答案 23 end;end.输入:9 19 29 39 输出:_简析这种题,近三四年每年都出现,基本上可以说是增加选手信心的送分题。细心顺着语句,简单模拟一遍,答案自然就出来了。需要强调的是,解题过程中千万别“看轻”这类题,掉以轻心、粗心大意。务必仔细认真,特别是看清楚变量,不要张冠李戴、以桃代李。如果大家都能得分的,不小心失分了,那是最大的损失!建议,如上把解答的过程直接详尽清晰地写在程序的右边,不容易错,也便于检查。选例二 NOIP2007提高组第二题program s402;var a,b:integer; x,y:integer;procedure fun(var a,b:integer);var k:integer;begin k:=a; a:=b; b:=k;end;begin a:=3; b:=6; x:=a; y:=b; fun(x,y); write(No.1:,a,b, ); fun(a,b); writeln(No.2:,a,b);end.输出:简析主要考查的是指针的简单使用以及子程序的值参概念。为取变量的内存地址,x:=a,也即x 存放的就是变量a的内存地址。x表示的是,内存地址为x的整型变量的值,其实也即变量a的值。所以,变量a与变量x是完全等价的,也即两个调用是完全一样的。结合值参概念,容易知道其结果是:No.1:3,6 No.2:3,6这题的关键是指针的基本使用,尤其是取地址。请思考以下程序的输出结果:program s402;type point=integer;var a,b:integer; x,y:point;procedure fun(a,b:point);var k:integer;begin k:=a; a:=b; b:=k;end;begin a:=3; b:=6; write(No.1:,a,b, ); x:=a; y:=b; fun(x,y); writeln(No.2:,a,b);end.输出:选例三 Program ex3;var n,i,j:Longint; s:Array 1.100 of integer;begin readln(n);i:=0; Repeat inc(i); if odd(n) then si:=1 else si:=0; n:=n SHR 1; Until n=0; for j:=i downto 1 do write(sj);writeln;end.输入:2009程序运行的结果是:简析本题的关键是清楚子程序inc(i)、odd(n)的含义,以及运算符shr的运算结果,特别是运算符shr的含义,如果不知道,那这题就没得做了。函数odd(n)是判断n是否为奇数,而shr是按位右移,高位补零。“直译”程序的意思是:n为奇数si为1,否则si为0;接着用右移运算,消去n化为二制进后的最低位。直到n为零。 其实,每次消化的n的二进制位最低位,就直接保存在数组s中。由此可知,其实输出的就是n转换为二进制后的结果:11111011001.小结:全面掌握语言基础,是“读程序写结果”的立根之本。如果碰到哪个函数不清楚,哪个运算符或符号不了解的,那么相关题目就会当场挂掉。“读程序写结果”,一题就是8分,因这种原因而失分是痛中之痛。基于这点,在NOIP初赛前,全面复习相关基础知识是必要的、也是重要的。读程序写结果之起步篇上一讲我们全面介绍了语言基础,本讲将进入实质的“技巧化”训练。“读程序写结果”,解决这类问题的方法,总体说来有两大类:一是从宏观上,了解程序的目的和大致算法;二是从微观上,人脑模拟程序的实际执行过程。在实际应用中,常常要综合运用。为了便于探讨,下面列举了八种技巧。需要说明的是,每种技巧也不是独立的,在实际使用过程中,经常需要交叉混合应用。技巧一:人工模拟,列表跟踪变量的变化过程选例四 NOIP2001提高组第二题program gao7_2;var p,q,s,t:integer;beginreadln(p);for q:=p+1 to 2*p dobegint:=0;s:=(p*q)mod(q-p);if s=0 then begin t:=p+q+(p*q)div(q-p); write(t:4); end; end;end.输入12输出解析:考查的是,学生对基本语句的阅读理解能力。通过简单的手工模拟可迅速得到答案。由于变量的递变次数较多,为了让手工模拟计算机执行过程更清晰,建议建立如下变量值递变列表:q131415161718s12*13 mod 112*14 mod 212*15 mod 312*16 mod 412*17 mod 512*18 mod 6s为零是是是是否是t181110877666续表:q192021222324s12*19 mod 712*20 mod 812*21mod 912*22mod 1012*23mod 1112*24mod 12s为零否是是否否是t626160也即输出结果为:181 110 87 76 66 62 61 60列表的好处就是可以清晰的表示各变量在不同时刻的递变情况。在变量不是太多,循环体执行次数有限的情况下,可大力提倡这种方法。技巧二:化整为零,分割处理阅读程序时,有些程序比较长,依据循环或子程序可以明显地将其分为几个“段”,这时我们可以化整为零,充分利用程序结构将其分割成若干个子程序段,再集中精力,分别对每个程序段进行独立处理、理解,逐一解决。选例五 NOIP2002八届提高组第二题1program Gxp2;2 var i , j , s ,sp1 : integer ;3 p : boolean ;4 a : array1.10 of integer ;5 begin6 sp1:=1; a1:=2; j:=2;7 while sp10 dobegin j:=j-1; bj:=m mod 10; m:=m div 10end;for h:=j to 10 do n:=n+bh;end; writeln(n);end.输入1234输出:解析:手工模拟部分: For循环,i为循环变量;M:=N、J:=11:暂不能理解;while循环。这个循环的作用大部分同学也较清楚,就是把M进行拆位,并把各位数字依次存入数组A。由此也知:以上M:=N是为了保护N的值,J:=11是表示数组A的下标。如M=1234,执行到退出while循环时,J的值为7,A的值为:H78910B(H)1234for h:=j to 10 do:也是循环。容易理解该循环的功能是在N的基础上累加数组A中下标从J到10的各值。该循环退出,N的值为1234+1+2+3+4,即:1244;结束外重循环,返回,i=2;重新执行语句(M:=N;J:=11),这时M的值为“1244”,J的值还是11,容易得:数组A的值为:H78910A(H)1244所以K=2时,N的值为1244+1+2+4+4,即:1255。至此应该可以理解程序的执行目的:即把N的数位拆开,再加起来,对新的N做同样的操作,反复10次。如果还进行“机械模拟”的话,会影响解题的速度,同时也增加人为失误的可能性。所以无需再“模拟”程序,可迅速手算出最后结果。“超越” 手算部分:K345678910N1255+1+2+5+5(1268)1268+1+2+6+8(1285)130113061316132713401348也即本例输出结果为:1348技巧四:善于把握关键语句(段)或过程名称算法发展至今,许多功能实现的程序段是经典而通用的。如:选例五的判断素数、选例六的拆位(即进制转换的本质),还有累加、累乘、排序、求最大值最小值,以及一些经典算法。碰到类似这样的程序段,我们可以有依据地判断其程序目的。“可读性”是程序优劣的一个重要指标。程序书写,为了其可读性,很多时候,变量名及子程序的名称,往往能“见文生义”。通过这些名称,有时很容易猜到子程序的功能(或变量的含义),起到“事半功倍”的效果。选例七 NOIP1998提高组第二题program ex5;const n=10;var s,i:integer;function co(i1:integer):integer;var j1,s1:integer;begin s1:=n; for j1:=n-1 downto n-i1+1 do s1:=s1*j1 div (n-j1+1); co:=s1;end;begin s:=n+1; for i:=2 to n do s:=s+co(i); writeln(s=,s);end.解析:程序结构简单,关键是弄清楚子函数co的功能。手工模拟一下:co(2):j1:=9 downto 9 s1=10*9/2co(3):j1:=9 downto 8 s1=10*9/2*8/3其实,到这应该可以知道程序的目标了,再结合函数名称为co,容易想到组合数。再看一个:co(4):j1:=9 downto 7 s1=10*9/2*8/3*7/4 =10*9*8*7/(4*3*2*1)=C(10,4)循环变量i是从2开始,累加到n。s的初值为1+n。如果我们能联想到C(n,0)=1、C(n,1)=n,则该程序输出即为:C(n,0)+ C(n,1)+ C(n,2)+ C(n,n)=小结:人工模拟的目的是为了理解程序的目的。为此,我们在模拟的过程中,应该结合自己已有的知识,并明察秋毫地接收一切有用的信息(包括函数名变量名),大敢而又细致地猜测并验证程序的目的。在了解并确定程序目的后,许多时候就可以超越程序本身,直接写出程序的执行结果。所以,了解程序的目的是关键。读程序写结果之进阶篇 上一讲,我们就“读程序写结果”解题的一般方法,做了个简单的探讨与总结。本讲,我们共同来研究两个特例:有关“字符(串)的操作与递归调用。技巧五:字符串的处理字符串操作,无论是NOIP初赛还是复赛,近些年来,频频出现,非常明确地提醒了选手,在准备NOIP竞赛时,必须充分地重视并认真彻底地把字符(串)操作了解清楚。在Pascal中,有关字符的类型有两种:char、string。特别要注意类型string与字符数组的异同点:(假设变量说明为: a:string; b:array1.100 of char)相同点:都可以用下标变量(形如ai、bi)进行访问。不同点:ord(a0)的值,固定为字符串a的长度(操作影响到字符串长度时,应注意保持该值的有效性);字符串a可以进行整体输出输入并可以使用系统有关字符串的过程与函数,而字符数组不行;类型string所能表示的字串长度为1到255,而字符数组不受此限制。有关字符(串)的函数与过程,请参阅“基础篇”。值得一提的是,常用字符的ASCII码为(括号内为ASCII码,从小到大排列):0(30H)9A(41H)Za(61H)z对字符(串)的处理,要求选手能结合字符(串)有关知识,灵活使用前面讲过的技巧。以下选例说明字符(串)操作在“读程序写结果”中的应用。选例八 NOIP2008提高组第四题1var s:string;2 i,j,len,k:integer;3begin read(s);len:=length(s);4 for i:=1 to len do5 if (ord(si)=ord(A) and (ord(si)=ord(Z) then6 si := chr(ord(si) - ord(A) + ord(a);7 for i:=1 to len do8 if (ord(si)ord(x) then si:= chr(ord(si)+3)9 else si:= chr(ord(si)-23);10 write(s);write(/);11 for j:=1 to 3 do begin12 i:=1;13 while i=len-j do begin14 si:=si+j;15 i:=i+j;16 end;17 end;18 writeln(s);19end.输入:ABCDEFGuvwxyz输出:_解析:应该算基础题。程序有点长,我们可以根据结构分为以下几个程序段进行分析:第4至6行:这个循环是依次判断字符是否为大写字母,若是,则改为小写。执行后s的值为:abcdefguvwxyz;第7至9行:注意分界点(对比对象)是字母x,运算后,s为:defghijxyzabc第10行:输出:defghijxyzabc/第11至17行:循环递变,j的值比较小,直接列表模拟!注意15行:变量i的步长。变量j123递变前的sdefghijxyzabcefghijxyzabccgfihxjzybaccc递变后的sefghijxyzabccgfihxjzybaccchfizxjaybcccc实现功能依次移位奇数位移位1471013第21行:输出:hfizxjaybcccc虽然本程序给人第一感觉:程序长、似乎挺难的,但经过简单的分割处理,可以看出,每个程序段的功能都是显而易见的。“一切反动派都是纸老虎”!在战略上可以藐视这类题,但在战术上应该重视细节。克服长程序给人的心理压力,沉下心来,仔细分析,认真运算,一切就迎刃而解。选例九 1Program t4;2var n,i,j:integer;str:string;3 a:Array 1.21 of string;4 t1,t2:longint;code:integer;5begin6 readln(str);7 n:=0;8 while str do begin9 i:=pos( ,str);10 n:=n+1;11 if i0 then12 begin an:=copy(str,1,i-1);delete(str,1,i);end13 else begin an:=str;str:= end;14 end;15 for i:=1 To n-1 do16 for j:=1 To n-i do begin17 val(aj+aj+1,t1,code);val(aj+1+aj,t2,code);18 if t1t2 then begin19 a21:=aj;aj:=aj+1;aj+1:=a21;20 end;21 end;22 for i:=1 To n do write(ai);writeln;23end.输入:9 3 34 321程序运行的结果是:解析这题用到的字符(串)子程序比较多,有需要的,请参阅“基础篇”。第8至14行构成循环的功能是什么呢?第9行,取空格的位置;继而,如果空格存在的话,把空格前的字符串赋予an,并在串str中把至空格为止的字符全部删除;若空格不存在,则把str赋予an,令str为空串。所以,实际上,它是以空格为分隔,把各数字字串,分别置于数组a中,即a=9、3,34,321。第15到21行,冒泡排序经典程序段,不同的是,大小的评价标准不一样。它是以相邻两数字字串连接在一起的数值大小为衡量标准。以aj= 3、aj+1= 34为例,执行完第17行的语句后可求得t1=334、t2=343,由于t1=14 then w(num div 14); write(num);end;begin w(2009);end.程序运行的结果是:解析具体执行过程如下:(注意箭号顺序)12345三个write语句,依次输出:101432009本例应用大括号的方式全部展开递归调用的过程,只要谨记所调用的子程序执行完毕方能返回调用该子程序的程序中继续执行,严格把关语句的执行顺序就可以了。只是,很多时候,我们没法,或者很难手工全部展开递归的详细过程,这时,一般可以采用“自底向上”,从递归边界出发,递推出结果。如:选例十一 function s(n,k:integer):longint; begin if (n=k) or (k=1) then s:=1 else s:=s(n-1,k-1)+k*s(n-1,k); end;begin writeln(s(7,5); end.输出结果:解析 程序很短很简单,但是如果我们用类似上例的方法来模拟展开该递归的执行调用过程,会碰到前所未有的困难。原因很简单,递归调用的次数太多了。碰到这种情况时,我们可以从递归的边界出发,进行递推求解。具体求解过程如下:1、边界赋值:sn,n=1;sn,1=12、递推求解过程:S3,2=s2,1+2*s2,2=3S4,2=s3,1+2*s3,2=7;s4,3=s3,2+3*s3,3=6S5,3=s4,2+3*s4,3=25;s5,4=s4,3+4*s4,4=10s6,4=s5,3+4*s5,4=65;s6,5=s5,4+5*s5,5=15S7,5=s6,4+5*s6,5=65+5*15=140整个递推过程,可记录如下表格:kn1234511211313141761512510161651571140也即本例输出结果为:140值得注意的是,我们只要求出表格中的数据即可,其它空白的,无需求解。为了节省时间,避免不必要的人为错误,所做的运算越少越好。那么哪些是该算的、哪些是无需计算的,也即如何只进行有效计算呢?这问题,留给读者自己思考。小结:字符(串)操作,除了要求选手要有扎实的语言基础并了解相关字符串知识点外,多数还体现了对选手细心、耐心及毅力品质的考核。题目一般不会引用高深的算法或理论,需要的就是“静心分析、耐心计算”。 而子程序的调用,考查的除了子程序调用本身的一些知识点外,多数还会揉合一些其它综合知识。比如,选例十一,其实就是第二类Stirling数。读程序写结果之提高篇 “读程序写结果”有时会考查选手经典算法的掌握情况及数学知识的应用能力。这类题,要求选手有较高的综合素质。下面共同探讨一下这两个方面:技巧七:计算经典问题的重现同一个问题,考虑的角度不一样,往往可以写出风格完全不一样,甚至算法完全不同的程序,结果却是相同的:殊途同归。正因为这样,有些经典问题经常会被拿出来“重写”。在读程序时,应该善于把刚刚看到的“程序”与自己脑海里的信息进行匹配。一旦找到自己已有信息里类似、甚至相同的问题时,面对的问题也就迎刃而解。这些经典问题有:素数、排序、约瑟夫问题、杨辉三角、最大公约数(辗转相除法)、高精度计算、二分法、求最短路径、拓扑排序、关键路径、欧拉回路、哈密顿回路、最小生成树、搜索问题等等。选例十二 NOIP2007提高组第三题1program S403;2var a1:array1.50 of integer;3var i,j,t,t2,n,n2:integer;4begin5 n:=50;6 for i:=1 to n do a1i:=0;7 n2:=round(sqrt(n);8 for i:=2 to n2 do9 if(a1i=0) then10 begin11 t2:=n div i;12 for j:=2 to t2 do a1i*j:=1;13 end;14 t:=0;15 for i:=2 to n do16 if (a1i=0) then17 begin18 write(i:4); inc(t);19 if(t mod 10=0) then writeln;20 end;21 writeln;22 end.输出:解析第7行,求n的平方根,干嘛用呢?a1i原来都为0,第8至13行循环里嵌套了第12行循环:为什么要把i的倍数的下标变量都改为1呢?其实,这就是经典的筛选法求素数!第14至20行循环,输出这些素数。变量t用来控制一行输出10个素数。因此,本例输出结果为:(注意场宽、对齐) 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47选例十三 NOIP2007提高组第四题program S404;const n=12; ch2:array0.12 of char =(q,A,S,O,R,T,E,X,A,M,P,L,E);var k:integer; ch:array0.12 of char;procedure shift(k,n:integer);var v:char; j:integer;begin v:=chk; j:=k+k; while (j=n) do begin if (jn) and (ord(chj)ord(chj+1) then inc(j); if (ord(v)ord(chj) then begin chj div 2:=chj; j:=j*2; end else exit; chj div 2:=v; end;end;procedure hpsrt;var k:integer; tmp:char;begin for k:=n div 2 downto 1 do shift(k,n); write(No.1: ); for k:=1 to n do write(chk); writeln; for k:=n downto 1 do begin tmp:=ch1; ch1:=chk; chk:=tmp; shift(1,k-1); end;end;begin for k:=0 to n do chk:=ch2k; hpsrt; write(No.2: ); for k:=1 to n do write(chk); writeln;end.输出:解析基础扎实并有灵性的选手,看完题就可以马上写出结果。本程序至少有以下非常容易让人联想的符号或代码:过程名:shift 移动? hpsrt 堆排序?for k:=n div 2 downto 1 do shift(k,n) :典型的建堆语句本例即输出建立最大堆后的状态,及从小到大堆排序后的结果:No.1: XTORSEAAMPLENo.2: AAEELMOPRSTX要注意的是,下标为0的对象(即q),没有参与操作。技巧八:巧用数学知识推理 有些程序,我们粗读一遍就可以知道其循环执行的次数非人工模拟能够忍受,或根本就没法模拟,这时应该想一想能否运用数学知识,推理得出程序执行的结果。当然,这要求选手要有扎实的数学功底。选例十四 NOIP2002提
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 任务7.3主梁施工
- 五都赋赏评(冷为峰)
- 介入国际共识全球诊疗统一
- 2026北京中科软DBA面试题及答案
- 2025年中国玻璃联体台盆设备市场调查研究报告
- 2025年中国热压机械市场调查研究报告
- 2025年中国汽车轮胎市场调查研究报告
- 2025年中国摆杆式加料机市场调查研究报告
- 2025年中国1,3,5三烯丙基氰尿醚市场调查研究报告
- 胃息肉术后静脉输液护理要点
- 宝兴县2026年上半年“雅州英才”工程赴外招才引智活动面向全国引进高层次和急需紧缺人才(14人)笔试参考题库及答案解析
- 2025年北京市事业单位联考A类真题试卷及答案
- 2026年南昌市西湖区社区工作者招聘考试参考题库及答案解析
- 山姆会员商店质量溯源体系优化方案
- 架空线路拉线施工技术交底
- 高磷血症患者饮食教育
- 海绵城市建设工程监理实施细则范本
- 不稳定型心绞痛诊疗指南(2025年版)
- 外科洗手小课件
- 2025年会考地理广东真题及答案
- 贵州国企招聘:2025贵州能源集团有限公司第一批综合管理岗招聘41人(公共基础知识)综合能力测试题附答案解析
评论
0/150
提交评论