usaco friday

来源:百度知道 编辑:UC知道 时间:2024/07/05 09:01:08
高手帮助 friday的前两个测试过了 3 过不了 以下是程序 我学PASCAL 的
找找错误

{
ID:tc10671
TASK:friday
LANG:PASCAL
}
program friday;
var
a:array[0..10000] of integer;
i,j,k,m,y,d,n:integer;
begin
assign(input,'friday.in'); reset(input);
assign(output,'friday.out'); rewrite(output);
readln(n);
m:=1;
y:=1;
d:=13;
fillchar(a,sizeof(a),0);
while y<=n do begin
case (d mod 7) of
6:inc(a[1]);
0:inc(a[2]);
1:inc(a[3]);
2:inc(a[4]);
3:inc(a[5]);
4:inc(a[6]);
5:inc(a[7]);
end;
if (m mod 12=4)or(m mod 12=6)or(m mod 12=11)or(m mod 12=9)
then d:=d+30
else if (m mod 12=2)and(y mod 4<>0)
then d:=d+28
else if (m mod 12=0)and(y mod 4=0)
then d:=d+29
else d:=d+31;
inc(m

还是自己改错比较好~
以下是我的程序
水平问题 写得比较烂 但是答案是对的
{
ID:lokihyq1
PROG:friday
LANG:PASCAL
}
program friday;
const
maxn=7;
var
top:integer;
i,n,m,j,k:longint;
a:array [1..maxn] of longint;
procedure doit;
begin
if (top+12) mod 7=0
then a[7]:=a[7]+1
else a[(top+12) mod 7]:=a[(top+12) mod 7]+1;
case j of
1,3,5,7,8,10,12:top:=(top+30) mod 7 +1;
4,6,9,11:top:=(top+29) mod 7 +1;
2:if k=1
then top:=(top+28) mod 7 +1
else top:=(top+27) mod 7 +1;
end;
end;
begin
assign(input,'friday.in');reset(input);
assign(output,'friday.out');rewrite(output);
top:=1;
k:=0;
readln(n);
for i:=0 to n-1 do
begin
m:=i+1900;
if m mod 100=0
then begin
if m mod 400=0
then k:=1;
end
else if m mod 4=0
then k:=1;
for j:=1 to 12 do
doit;
k:=0; <