Y3K
(Tin học trẻ không chuyên TQ - 1999).
(Tin học trẻ không chuyên TQ - 1999).
Cho số nguyên N trong phạm vi từ 1000 đến 999999. Cần xác định số này có phải là thông tin về một ngày tháng có trong thế kỷ 21 không. (Thế kỷ 21 bắt đầu từ 1 tháng 1 năm 2001 và kết thúc vào ngày 31 tháng 12 năm 3000. Biết rằng 2 chữ số cuối của N là chỉ hai chữ số cuối của năm, các chữ số còn lại (ở đầu) xác định ngày và tháng.
Ví dụ:
1111 tương ứng với 1 tháng 1 năm 2011;
21290 tương ứng với 2 tháng 12 năm 2090 hoặc 21 tháng 2 năm 2090;
131192 tương ứng với 13 tháng 11 năm 2092;
32392 Không phải là thông tin về một ngày tháng nào cả;
311198 Không phải là thông tin về một ngày tháng nào cả;
29205 Không phải là thông tin về một ngày tháng nào cả;
Dữ liệu: Nhập vào số N từ bàn phím.
Kết quả: Đưa ra màn hình các ngày tháng năm tương ứng với N hoặc thông báo là KHONG nếu N không phải là thông tin về một ngày tháng nào cả.
Ví dụ:
Giá trị của N Thông báo ra màn hình tưng ứng
1111 1-1-2011
21290 2-12-2090 HOAC 21-2-2090
29205 KHONG
Lời giải tham khảo
uses crt;
var
n: string;
y1,d1,d2,t1,t2,f,i,Hop1,hop2,w: integer;
yo1,do1,do2,to1,to2: string;
nhuan: boolean;
begin
repeat
clrscr;
writeln('nhap so nguyen: '); readln(w);
until (w<1000000)and(w>1000);
str(w,n);
for i:=length(n)-1 to length(n) do yo1:=yo1+n[i];
for i:=1 to 2 do do2:=do2+n[i];
for i:=1 to 1 do do1:=do1+n[i];
for i:=2 to length(n)-2 do to1:=to1+n[i];
for i:=3 to length(n)-2 do to2:=to2+n[i];
val(to2,t2,f);
val(do2,d2,f);
val(yo1,y1,f);
val(do1,d1,f);
y1:=y1+2000;
val(to1,t1,f);
Hop1:=0;
nhuan:= false;
if (y1 mod 4=0) and (y1 mod 100<>0) then Nhuan:=true;
if y1 mod 400=0 then Nhuan:=true;
hop1:=0;
if (d1>0) and (d1<32) then
if (t1>0) and(t1<13) then
if (t1 in[4,6,9,11]) and(d1<31) then Hop1:=1 else
if (t1=2) and (Nhuan) and (d1=29) then Hop1:=1 else
if (t1=2) and (d1<29) then Hop1:=1
else if t1 in [1,3,5,7,8,12] then hop1:=1;
Hop2:=0;;
if (d2>0) and (d2<32) then
if (t2>0) and(t2<13) then
if (t2 in[4,6,9,11]) and(d2<31) then Hop2:=1 else
if (t2=2) and (Nhuan) and (d2=29) then Hop2:=1 else
if (t2=2) and (d2<29) then Hop2:=1
else if t2 in [1,3,5,7,8,12] then hop2:=1;;
if (Hop1=1) and (Hop2=1) then write(d1,'-',t1,'-',y1,' HOAC ',d2,'-',t2,'-',y1)
else if Hop1=1 then write(d1,'-',t1,'-',y1) else
if Hop2=1 then write(d2,'-',t2,'-',y1) else
write('KHONG');
readln;
end.
No comments:
Post a Comment
Cảm ơn bạn đã nhận xét