pascal程式設計題高手來高分 追加

時間 2021-05-07 20:00:29

1樓:凱爾特

第一題:

vary,m,d:integer;

y0,m0,d0:integer;

s,i,p,q:integer;

function year(n:integer):integer;

begin

if (n mod 4=0) and (n mod 100<>0) then

year:=366

else year:=365;

end;

function month(n,nian:integer):integer;

begin

case n of

1,3,5,7,8,10,12:month:=31;

4,6,9,11:month:=30;

2:begin

if year(nian)=365 then month:=28else month:=29;

end;end;

end;

begin

readln(y,m,d);

readln(y0,m0,d0);

y:=y+19;

for i:=1 to m-1 do

p:=p+month(i,y);

p:=p+d;

for i:=1 to m0-1 do

q:=q+month(i,y0);

q:=q+d0;

for i:=y0 to y-1 do

s:=s+year(i);

s:=s+p-q;

write(s);

end.

第二題:

vara:array[1..100000]of integer;

i,j,x,s,n:integer;

begin

read(n);

for i:=1 to n do

read(a[i]);

repeat

j:=0;

for i:=1 to n-1 do

if (a[i]>a[i+1]) thenbegin

x:=a[i];

a[i]:=a[i+1];

a[i+1]:=x;

inc(j);

end;

until j=0;

for i:=1 to ((n div 2)+1) dos:=s+a[2*i-1];

write(s);

end.

第三題var

a:array[1..1000]of integer;

way:longint;

n:integer;

function cut(m:longint):longint;

begin

if m=55555 then cut:=0else cut:=m;

end;

procedure aa(k:integer);

var i:integer;

begin

if k=n then begin

for i:=0 to 1 do

begin

a[k]:=i;

if a[k-2]+a[k-1]+a[k]<=2 then begin

inc(way);

way:=cut(way);

end;

end;

endelse begin

for i:=0 to 1 do

begin

a[k]:=i;

if k>=3 then begin

if a[k-2]+a[k-1]+a[k]<=2 thenaa(k+1);

endelse aa(k+1);

end;end;

end;

begin

read(n);

aa(1);

write(way mod 55555);

end.

2樓:

很無聊的題目啊··········

pascal程式 選數,pascal程式設計 數字遊戲

型別 搜尋 題解 本題動態規劃無從下手,也無數學公式可尋,看來只能搜尋 組合的生成演算法 其實1 n 20這個約束條件也暗示我們本題搜尋是有希望的,組合的生成可用簡單的dfs來實現,既搜尋這k個整數在原數列中的位置,由於組合不同於排列,與這k個數的排列順序無關,所以我們可以令a i 1 是否為素數最...

pascal程式設計 誰做了好事?有ABCD四位學生,其中一位做

a,b,c,d boolean a 1 b 0 c 0 d 0 如果是a if not not a and c and d and not d or not a and not c and d and not d or not a and c and not d and not d or not a...

pascal程式設計問題,求大師解答給最簡潔的程式

既然1已經用來表示障礙,那就用 1表示有1種方案,2表示有2種方案,var a array 0.100,0.100 of integer n,m,i,j integer begin read m,n for i 1 to m do for j 1 to n do read a i,j if a 1,...