Mình giải rồi mà đây là cách khác bạn cần:
Nó là đếm tháng sau đó đổi ra ngày, khác cách cũ là đếm ngày.
Ưu điểm: nhanh hơn tầm 20 lần.
Khuyết điểm: dài :).
uses crt;
var f:text; s:string; a,b,c,d,i:longint;
function sn(a,b:longint):longint;
begin
if a<=7 then if a mod 2=0 then sn:=30 else sn:=31 else
if a mod 2=0 then sn:=31 else sn:=30;
if a=2 then if b mod 4=0 then sn:=29 else sn:=28;
end;
begin
clrscr;
assign(f,'input.pas');reset(f);
readln(f,s);
close(f);
assign(f,'output.pas');rewrite(f);
val(copy(s,1,2),a);
val(copy(s,4,2),b);
val(copy(s,7,4),c);
if (c<>2022) then
begin
inc(d,(sn(b,c)-a)+21);
repeat
inc(b);
if b=13 then begin b:=1; inc(c); end;
inc(d,sn(b,c));
until (b=10)and(c=2022);
end else
begin
if b=11 then inc(d,22-a) else inc(d,22+(sn(b,c)-a));
for i:=b+1 to 10 do d:=d+sn(i,c);
end;
writeln(d);
close(f);
end.