CHUYÊN ĐỀ : CÁC BÀI TOÁN VỀ THỜI GIAN
(Nhập xuất trên file)
1/ ĐỔI GIỜ
Dữ liệu vào :
-Dòng 1: ba số h m s tương ứng với số giờ, phút, giây
-Dòng 2 : số G là số giây
Dữ liệu ra :
-Dòng 1: In ra một số S1 là số giây đổi ra từ số giờ, số phút, số giây tương ứng
-Dòng 2 : In ra ba số h1 m1 s1 là số giờ, số phút và số giây tương ứng với số giây G
Ví dụ :
DOIGIO.INP |
DOIGIO.OUT |
0 50 31 8147 |
3031 2 15 47
|
2/ XÂU THỜI GIAN
Một xâu kí tự biểu diễn thời gian là xâu kí tự bao gồm các số và các chữ h, m, s tương ứng với giờ, phút và giây.
Ví dụ : cho xâu 1h50m24s nghĩa là : 1 giờ 50 phút 24 giây.
Cho một xâu kí tự biểu diễn thời gian, em hãy cho biết thời gian đó bằng bao nhiêu giây ?
Ví dụ :
XAUTHOIGIAN.INP |
XAUTHOIGIAN.OUT |
1h50m24s |
6624s |
3/CỘNG, TRỪ THỜI GIAN
Nhập hai lượng thời gian (mỗi lượng dưới dạng giờ, phút, giây)
In ra tổng hai thời gian, và hiệu hai thời gian (thời gian lớn trừ thời gian bé)
Ví dụ :
ADDTIME.INP |
ADDTIME.OUT |
2h43m18s 0h54m23s |
3h37m41s 1h48m55s |
11h25m3s 23h4m19s |
34h29m22s 11h39m16s |
4/AI CHẠY NHANH NHẤT
Trong một cuộc thi chạy người ta đánh số thứ tự các vận động viên từ 1 đến N, và ghi lại thời gian chạy của từng vận động viên tương ứng.
Nhiệm vụ của em là tìm ra số thứ tự của người chạy nhanh nhất
Dữ liệu vào : Gồm N + 1 dòng
-Dòng 1: Ghi N là số lượng các vận động viên
Dòng 2 ..Dòng N + 1: Dòng i +1 ghi thời gian chạy của vận động viên thứ i (giờ, phút, giây)
Dữ liệu ra :
-Dòng 1: Ghi số K là số thứ tự của vận động viên chạy nhanh nhất, nếu có nhiều vận động viên chạy nhanh nhất thì ghi tất cả các thứ tự tương ứng trên cùng một dòng
Ví dụ :
CHAYNHANH.INP |
CHAYNHANH.OUT |
5 1h24m56s 2h08m01s 1h32m0s 0h59m34s 1h15m49s |
4 |
5/NĂM NHUẬN
-Nhập vào một số nguyên dương N
Hãy kiểm tra xem năm N có là năm nhuận hay không ?
-Nếu có ghi ‘Yes’
-Nếu không thì ghi ‘No’ và năm nhuận gần năm N nhất là năm nào ? In độ chênh lệch tương ứng
Ví dụ :
NAMNHUAN.INP |
NAMNHUAN.OUT |
1994 |
Yes |
1999 |
No +1 |
6/(5.1)SỐ NGÀY CỦA MỘT THÁNG
Nhập vào số tháng.
In ra số ngày của tháng đó.
Ví dụ :
DAYSOFM.INP |
DAYSOFM.OUT |
12 |
31 |
2 1990 |
28 |
7/(5.2) NGÀY HỢP LỆ
Nhập vào ba số a b c tương ứng là ngày tháng năm .
Hãy kiểm tra xem ngày đó có hợp lệ không
(Thế nào là ngày tháng hợp lệ ?)
Ví dụ :
DAYLIFE.INP |
DAYLIFE.OUT |
12 8 2013 |
1 |
31 4 1999 |
0 |
8/(5.3) NGÀY HỢP LỆ PRO
Nhập vào một xâu kí tự chỉ bao gồm các chữ số từ 0 đến 9 biểu diễn một ngày nào đó có thể hợp lệ hay không
Ví dụ :
- xâu 2311990 biểu diễn ngày 23 tháng 1 năm 1990, dễ thấy xâu kí tự này không thể biểu diễn hợp lệ một ngày tháng nào khác ?
- xâu 2112013 biểu diễn hai ngày khác nhau là :
ngày 2 – 11 – 2013 và ngày 21 – 1 2013
- xâu 5442014 không biểu diễn một tháng nào hợp lệ.
DAYLIFEPRO.INP |
DAYLIFEPRO.OUT |
2122013 |
Yes 2 – 11 – 2013 21 – 1 – 2013 |
5442014 |
No. |
9/ TỔNG SỐ NGÀY
Tính tổng số ngày tính từ ngày A tháng B đến ngày C tháng D trong cùng một năm
Dữ liệu vào :
-Dòng 1: hai số nguyên A và B (A: số ngày, B: số tháng).
-Dòng 2: hai số nguyên C và D (C: số ngày, D: số tháng).
Dữ liệu ra :
-Dòng 1: tổng số ngày
Ví dụ :
SUMDAYS.INP |
SUMDAYS.OUT |
16 3 20 4 |
36 |
10/ SẮP XẾP NGÀY
Cho một danh sách N ngày (ngày-tháng-năm) .
Hãy sắp xếp các ngày theo thứ tự từ xa nhất đến gần nhất.
Dữ liệu vào :gồm N + 1 dòng
-Dòng 1: Ghi số nguyên dương N
-Dòng 2 .. Dòng N+1 : mỗi dòng ghi ba số A, B và C tương ứng với ngày – tháng – năm.
Dữ liệu ra :
-N dòng, mỗi dòng là một ngày – tháng – năm đã được sắp xếp.
Ví dụ :
SORTDATE.INP |
SORTDATE.OUT |
4 15 4 2013 8 9 2014 15 1 2003 7 2 1999 |
7 2 1999 15 1 2003 15 4 2013 8 9 2014
|
10 23 1 1900 02 12 2000 14 7 545 20 10 545 02 1 545 10 3 1900 27 4 2000 12 1 1900 12 5 2000 1 1 545 |
|
Mình sẽ nêu ý tưởng nhé.
1/ Bạn chỉ cần áp dụng
1h=60p ; 1p=60 giây thôi
Ý 1: Bạn đổi h và p ra
Ví dụ : g=g+h*60*60;
g:=g+p*60;
Ý 2: Như ý 1 bạn chỉ cần chia tối đa của phút là 60 nếu > thì + dồn cho giờ
2/ Bạn đổi xâu sang thành số và nếu s[1] hoặc s[2] là số thì chuyển qua biến giờ . Tiếp theo chuyển phút. Và nhân như theo ý 1 bài 1.
3/ Áp dụng ý tưởng các câu 1 và 2 .
Các bài còn lại tương tự