收藏 分销(赏)

NOIP2008普及组复赛思路及程序(PASCAL).doc

上传人:xrp****65 文档编号:7226336 上传时间:2024-12-28 格式:DOC 页数:19 大小:38.50KB
下载 相关 举报
NOIP2008普及组复赛思路及程序(PASCAL).doc_第1页
第1页 / 共19页
NOIP2008普及组复赛思路及程序(PASCAL).doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述
第一题 Program Gy; Const Name='isbn'; Var A,B:String; Procedure Inp; Begin Assign(Input,Name+'.in');Reset(Input); Assign(Output,Name+'.out');Rewrite(Output); Readln(A); End; Procedure Main; Var i,j,k:Longint; Begin j:=0;k:=0; For i:=1 to Length(A)-1 do If A[i]in['0'..'9']then Begin Inc(k); j:=j+(Ord(A[i])-Ord('0'))*k; End; j:=j mod 11; B:=A; If j=10 then B[Length(B)]:='X'Else B[Length(B)]:=Chr(j+Ord('0')); End; Procedure Oup; Begin If B=A then Writeln('Right') Else Writeln(B); Close(Input); Close(Output); End; Begin Inp; Main; Oup; End. 第二题 Program Gy; Uses Math; Const Name='seat'; Var x1,y1,x2,y2:Array[1..3000]of Longint; N,M,K,L,D:longint; A,C:Array[1..2,1..2000]of Longint; B1,B2:Array[1..2000]of Byte; Procedure Inp; Var i:longint; Begin Assign(Input,Name+'.in');Reset(Input); Assign(Output,Name+'.out');Rewrite(Output); Randomize; Readln(M,N,K,L,D); For i:=1 to D do Readln(x1[i],y1[i],x2[i],y2[i]); End; Procedure Sort(p,l,r:Longint); Var i,j,x,y:Longint; Begin i:=l;j:=r;x:=a[p,Random(r-l)+l]; Repeat While a[p,i]>x do Inc(i); While a[p,j]<x do Dec(j); If i<=j then Begin y:=a[p,i]; a[p,i]:=a[p,j]; a[p,j]:=y; y:=c[p,i]; c[p,i]:=c[p,j]; c[p,j]:=y;Inc(i); Dec(j); End; Until i>j; If l<j then Sort(p,l,j); If i<r then Sort(p,i,r); End; Procedure Main; Var i:Longint; Begin For i:=1 to M do C[1,i]:=i; For i:=1 to N do C[2,i]:=i; For i:=1 to d do If x1[i]=x2[i]then Inc(A[2,Min(y1[i],y2[i])]) Else Inc(A[1,Min(x1[i],x2[i])]); Sort(1,1,N); Sort(2,1,M); For i:=1 to K do B1[C[1,i]]:=1; For i:=1 to L do B2[C[2,i]]:=1; End; Procedure Oup; Var i,j:Longint; Begin j:=0; For i:=1 to M-1 do If b1[i]=1 then Begin Inc(j); Write(i); If j<>K then Write(' '); End; Writeln; j:=0; For i:=1 to N-1 do If b2[i]=1 then Begin Inc(j); Write(i); If j<>L then Write(' '); End; Writeln; Close(Input); Close(Output); End; Begin Inp; Main; Oup; End. 第三题 Program Gy; Uses Math; Const Name='ball'; Var F:Array[0..1,1..500]of Longint; M,N:Longint; Procedure Inp; Begin Assign(Input,Name+'.in');Reset(Input); Assign(Output,Name+'.out');Rewrite(Output); Readln(n,m); End; Procedure Main; Var i,j:Longint; Begin F[0,1]:=1; For i:=1 to M do For j:=1 to N do F[i mod 2,j]:=F[(i-1)mod 2,(j+n-2)mod n+1]+F[(i-1)mod 2,(j+n)mod n+1]; End; Procedure Oup; Begin Writeln(F[M mod 2,1]); Close(Input); Close(Output); End; Begin Inp; Main; Oup; End. 第四题 Program Gy; Const Work='drawing'; Type Rec=Record X,Y:longint; End; Arr=Array[1..20000] of Longint; Var A:Array[1..300,1..300] of Longint; N,M,MaxN,MaxM:Longint; B:Array[1..1000,1..1000]of Char; Procedure Inp; Var i,j:Longint; Begin Assign(Input,Work+'.in');Reset(Input); Assign(Output,Work+'.out');Rewrite(Output); Read(n,m); For i:=1 to N do For j:=1 to M do Read(a[n+1-i,j]); MaxN:=0;MaxM:=0; For i:=1 to N do For j:=1 to M do Begin If 2*i+4*j+1>MaxM then MaxM:=2*i+4*j+1; If (2*i+3*a[i,j]+1>MaxN) then Maxn:=2*i+3*a[i,j]+1; End; For i:=1 to MaxN do For j:=1 to MaxM do B[i,j]:='.'; End; Procedure Main; Var i,j,k,x,y:Longint; Begin For i:=N downto 1 do For j:=1 to M do For k:=1 to A[i,j] do Begin Y:=2*i+4*j-5;X:=2*i+3*k-4; B[x,y]:='+'; B[x,y+1]:='-'; B[x,y+2]:='-'; B[x,y+3]:='-'; B[x,y+4]:='+'; B[x+1,y]:='|'; B[x+1,y+1]:=' '; B[x+1,y+2]:=' '; B[x+1,y+3]:=' '; B[x+1,y+4]:='|'; B[x+1,y+5]:='/'; B[x+2,y]:='|'; B[x+2,y+1]:=' '; B[x+2,y+2]:=' '; B[x+2,y+3]:=' '; B[x+2,y+4]:='|'; B[x+2,y+5]:=' '; B[x+2,y+6]:='+'; B[x+3,y]:='+'; B[x+3,y+1]:='-'; B[x+3,y+2]:='-'; B[x+3,y+3]:='-'; B[x+3,y+4]:='+'; B[x+3,y+5]:=' '; B[x+3,y+6]:='|'; B[x+4,y+1]:='/'; B[x+4,y+2]:=' '; B[x+4,y+3]:=' '; B[x+4,y+4]:=' '; B[x+4,y+5]:='/'; B[x+4,y+6]:='|'; B[x+5,y+2]:='+'; B[x+5,y+3]:='-'; B[x+5,y+4]:='-'; B[x+5,y+5]:='-'; B[x+5,y+6]:='+'; End; End; Procedure Oup; Var i,j:Longint; Begin For i:=MaxN downto 1 do Begin For j:=1 to MaxM do Write(b[i,j]); Writeln; End; Close(Input); Close(Output); End; Begin Inp; Main; Oup; End. 第3题要一步一步算,程序如下 var m,n,i,j:integer; a:array[-30..30,0..30]of longint; begin assign(input,'ball.in'); reset(input); assign(output,'ball.out'); rewrite(output); read(m,n); for i:=-n to n do if i mod m=0 then a[i,n]:=1 else a[i,n]:=0; for i:=n-1 downto 0 do for j:=-i to i do a[j,i]:=a[j 1,i 1] a[j-1,i 1]; writeln(a[0,0]); close(input); close(output) end. 第四题的话,要按从上到下一层一层的覆盖,并且要先算出输出图形的大小,程序如下(不好意思,因为本人水平问题,这个程序只能通过小的数据) var s:array[1..150]of string; a:array[1..50,1..50]of integer; m,n,i,j,p,q,k,l,x,y:integer; begin assign(input,'drawing.in'); reset(input); assign(output,'drawing.out'); rewrite(output); read(m,n); for i:=1 to m do for j:=1 to n do read(a[i,j]); p:=4*n 1 2*m; q:=0; for i:=1 to m do for j:=1 to n do if 3*a[i,j] 3 2*m-2*i>q then q:=3*a[i,j] 3 2*m-2*i; for i:=1 to q do begin s[i]:=''; for j:=1 to p do s[i]:=s[i] '.' end; for i:=1 to m do begin x:=q-2*m 2*i; for j:=1 to n do begin y:=1 2*m-2*i (j-1)*4; s[x][y]:=' '; s[x][y 4]:=' '; for k:=1 to 3 do s[x][y k]:='-'; s[x-1][y 1]:='/'; s[x-1][y 5]:='/'; s[x-2][y 2]:=' '; s[x-2][y 6]:=' '; for k:=1 to a[i,j] do begin for l:=1 to 2 do begin s[x-l-3*(k-1)][y]:='|'; s[x-l-3*(k-1)][y 4]:='|'; s[x-1-l-3*(k-1)][y 5]:=' '; s[x-2-l-3*(k-1)][y 6]:='|' end; s[x-3*k][y]:=' '; s[x-3*k][y 4]:=' '; for l:=1 to 3 do begin s[x 1-3*k][y l]:=' '; s[x 2-3*k][y l]:=' ' end; s[x-2-3*k][y 2]:=' '; s[x-2-3*k][y 6]:=' '; for l:=1 to 3 do s[x-1-3*k][y 1 l]:=' '; s[x-1-3*k][y 1]:='/'; s[x-1-3*k][y 5]:='/'; for l:=1 to 3 do begin s[x-3*k][y l]:='-'; s[x-3*k-2][y l 2]:='-' end end; end end; for i:=1 to q do writeln(s[i]); close(input); close(output) end. 以上是推荐回答,你可以参考如下其他回答 相关问题 • 求个NOIP复赛用的标准PASCAL,告诉我下载地址 • 找 NOIP 2007 提高组 复赛 的 解题报告(free pascal) • noip复赛什么时候举行? • 请问NOIP复赛中的输入输出文件需要自己制作还是比赛前就提供好的? • 请问pascal一道NOIP题目,有关逻辑判断 设计江湖为你用户的其他回答参考: 其他答案 我也错了 请问你是怎么知道成绩的啊? 谢谢 第三题:首先利用DP计算杨辉三角形的第n-1层,存入数组a,如果m是偶数则将a的正中那个数存入s,否则将0存入s,再将a数组中n的倍数加入s.就5分,不写了 第四题:昨天奋斗了1小时,发现自己在考试时编的程序有问题..按照我考试时写的那个程序是不能出现0的..恩,扯远了.只要先将所有数据读入,计算字符串数组顶格的偏移值s1,然后从左往右,从下往上,从后往前画正方体,最后再将左端的'.'删除就可以了. 只有C的源代码: #include <stdio.h> char s[501][402]; void drawing(int px,int py,int n){ int i; s[px][py 2]=' '; for(i=3;i<6;i )s[px][py i]='-'; s[px][py 6]=' '; s[px 1][py 1]='/'; for(i=2;i<5;i )s[px 1][py i]=' '; s[px 1][py 5]='/'; s[px 2][py]=' '; for(i=1;i<4;i )s[px 2][py i]='-'; s[px 2][py 4]=' '; for(i=1;i<=n;i ){ s[px 3*i][py]=s[px 3*i 1][py]= s[px 3*i][py 4]=s[px 3*i 1][py 4]= s[px 3*i-2][py 6]=s[px 3*i-1][py 6]= '|'; s[px 3*i][py 1]=s[px 3*i][py 2]=s[px 3*i][py 3]= s[px 3*i 1][py 1]=s[px 3*i 1][py 2]=s[px 3*i 1][py 3]= s[px 3*i-1][py 5]=s[px 3*i][py 5]= ' '; s[px 3*i][py 6]= s[px 3*i 2][py]=s[px 3*i 2][py 4]= ' '; s[px 3*i 2][py 1]=s[px 3*i 2][py 2]=s[px 3*i 2][py 3]='-'; s[px 3*i 1][py 5]='/'; } } int main(){ FILE *in,*out; int m,n,i,j,s1=0,k; in=fopen("drawing.in","r"); out=fopen("drawing.out","w"); fscanf(in,"%d%d",&m,&n); for(i=0;i<501;i ){ for(j=0;j<2*m 4*n 1;j ){ s[i][j]='.'; }s[i][j]='\0'; }for(i=0;i<m;i ){ for(j=0;j<n;j ){ fscanf(in,"%d",&k); s1=2*i s1-k*3<0?k*3-2*i:s1; } } fseek(in,0,0); fscanf(in,"%d%d",&m,&n); for(i=0;i<m;i ){ for(j=0;j<n;j ){ fscanf(in,"%d",&k); if(k)drawing(2*i s1-k*3,2*m-2*i-2 4*j,k); } }k=0; for(j=0;j<2*m 4*n 1;j ){ for(i=0;i<s1 2*m 1;i ){ if(s[i][j]!='.'){ j=402; break; } }if(j!=402)k ; } for(i=0;i<s1 2*m 1;i ){ fprintf(out,"%s ",s[i] k); } fclose(in); fclose(out); return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服