当前位置:首页 > noip普及组初赛模拟试卷17(附答案)
var j:integer; begin
j:=1;
while (a>s[j])and(j for k:=1 to NN do s[k]:=chr(ord('A')+2*k+1); k:=fun1(s,'M',NN)+fun2(s,'M',NN); writeln(k); end. 输出: 11 4.const n=4; type tt=array[1..100]of char; var inp,t:tt; k,num:integer; procedure push(out,s:tt;it,ot,st:integer); var k:integer; c:tt; begin if it>0 then begin c:=s; c[st+1]:=inp[it]; push(out,c,it-1,ot,st+1); end; if st>0 then begin c:=out; c[ot+1]:=s[st]; push(c,s,it,ot+1,st-1); end; if ot=n then begin num:=num+1; for k:=1 to n do write(out[k]); write(' '); end; end; begin for k:=n downto 1 do inp[k]:=chr(65-k+n); num:=0; push(t,t,n,0,0); writeln; writeln('num=',num); end. 输出 DCBA CDBA CBDA CBAD BDCA ACDB ACBD ABDC ABCD BCDA BCAD BADC BACD ADCB Num=14 完善程序题 许多小球一个一个地从一棵满二叉树上掉下来组成另一棵满二叉树。每一时刻,一个正在下降的球第一个访问的是非叶子节点;继续下降时,或者走右子树,或者走左子树,直到访问到叶子节点。决定球运动方向的是每个节点的布尔值。最初,所有的节点的布尔值都是flase。当球访问到一个节点时,如果这个节点是FALSE,则这个球把它变成TRUE,然后从左子树走,继续它的旅程。如果节点是TRUE,则球会改变它为FALSE,接下来从右子树走。 若给定fbt的深度D,现在第I个小球下落,且I不超过给定的fbt的叶子数,写一个程序求小球停止时的叶子序号。 输入格式:输入文件共一行,包含两个用空格隔开的整数D和I,其中2≤D≤20,1≤I≤524288。 输出格式:共一行,输出第I个小球下落停止时的叶子序号。 输入样例: 4 4 输出样例 12 [程序]: var d,i,j,k,x:longint; a:array[1..5242]of boolean; begin (1)readln(d,i); fillchar(a,sizeof(a),false); for j:=1 to i do begin x:=1 ; for k:=1 to (2)d-1 do if a[x] then begin a[x]:=false; x:=(3)x*2+1; end else begin a[x]:=(4)true; x:=x*2; end; end; writeln(x); end.
共分享92篇相关文档