资源描述
第一题
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;
}
展开阅读全文