题目:
题解:
我们可以先做出60%,这很简单:只要判断回文;
后40%判断日期。
代码:
var date1,date2,i,j,k,ans,t,y1,y2,m1,m2,d1,d2,xm,xd,ym,yd:longint;
a,y:array[0..13] of integer;
procedure main(dt:longint);
var t:boolean;
i:longint;
begin
i:=0;
while dt>0 do
begin
inc(i);
a[i]:=dt mod 10;
dt:=dt div 10;
end;
t:=true;
for i:=1 to 4 do
if a[i]<>a[9-i] then t:=false;
if t=true then inc(ans);
end;
begin
read(date1);
read(date2);
ans:=0;
if date1=date2 then
begin
main(date1);
write(ans);
end else
begin
y1:=date1 div 10000; m1:=date1 div 100-y1*100; d1:=date1 mod 100;
y2:=date2 div 10000; m2:=date2 div 100-y2*100; d2:=date2 mod 100;
y[1]:=31; y[3]:=31; y[4]:=30; y[5]:=31; y[6]:=30;
y[7]:=31; y[8]:=31; y[9]:=30; y[10]:=31; y[11]:=30; y[12]:=31;
for i:=y1 to y2 do
begin
if (i mod 4=0)and(i mod 100<>0)or(i mod 4=0)and(i mod 400=0) then
y[2]:=29 else y[2]:=28;
if (i=y1)and(y1=y2) then begin xm:=m1;ym:=m2; end else
if i=y1 then begin xm:=m1; ym:=12; end else
if i=y2 then begin ym:=m2; xm:=1; end else
begin xm:=1; ym:=12; end;
for j:=xm to ym do
begin
if (i=y1)and(y1=y2)and(j=m1)and(m1=m2) then
begin xd:=d1;yd:=d2; end else
if (i=y1)and(j=m1) then begin xd:=d1; yd:=y[j]; end else
if (i=y2)and(j=m2) then begin yd:=d2; xd:=1; end else
begin xd:=1; yd:=y[j]; end;
for k:=xd to yd do
begin
t:=i*10000+j*100+k;
main(t);
end;
end;
end;
write(ans);
end;
end.