Bài 1: Phân số tối giản.
Cho 2 số nguyên dương A, B (1 ≤ A, B ≤ 109). Hãy tìm phân số tối giản của phân số .
Dữ liệu vào: (PSTG.INP)
+ Dòng 1: Ghi hai số tự nhiên A và B, mỗi số cách nhau ít nhất một ký tự trắng.
Dữ liệu ra: (PSTG.OUT)
+ Dòng 1: Ghi hai số tự nhiên tương ứng là tử số và mẫu số của phân số tối giản.
Ví dụ:
PSTG.INP PSTG.OUT
25 30 5 6
16 21 16 21
Bài 2: Dãy số đối xứng.
Cho dãy gồm n số nguyên dương ( ). Dãy gồm k phần tử liên tiếp được gọi là dãy con của dãy ban đầu. Ví dụ: Dãy 2, 1, 4 là dãy con của dãy 1, 3, 2, 1, 4, 9.
Số đối xứng là số viết theo thứ tự ngược lại vẫn bằng chính nó. Số có một chữ số được coi là số đối xứng. Ví dụ: Các số 1221, 99, 282, 8 là số đối xứng; các số 12, 98, 199 không là số đối xứng.
Yêu cầu: Cho trước dãy số, hãy tìm dãy con dài nhất có các phần tử là số đối xứng.
Dữ liệu vào: (DSDX.INP)
+ Dòng 1: Ghi một số tự nhiên n là độ dài dãy số.
+ Dòng 2: Ghi n số nguyên dương, mỗi số cách nhau một ký tự trắng .
Dữ liệu ra: (DSDX.OUT)
+ Dòng 1: Ghi một số tự nhiên là độ dài dãy số dài nhất thoả mãn điều kiện. Nếu không có thì ghi -1.
+ Dòng 2: Ghi dãy số tìm được. Nếu có nhiều dãy số thoả mãn thì lấy dãy số đầu tiên tính từ bên trái.
Ví dụ:
DSDX.INP DSDX.OUT
10 44 343 567765
23 44 343 567765 43 233 98 21 989 888 3
5 87 901 223 3212 83 -1
Bài 3: Giá trị biểu thức
Cho một xâu chỉ chứa các kí tự: chữ số, dấu cộng, dấu trừ, thể hiện một biểu thức số học.
Yêu cầu: Tính giá trị của biểu thức đã cho. Biết xâu biểu thức không quá 255 kí tự, các số hạng và giá trị của biểu thức có độ lớn không quá 2.106.
Dữ liệu vào: (GTBT.INP)
+Dòng 1: Ghi duy nhất một xâu kí tự thể hiện biểu thức cần tính.
Dữ liệu ra: (GTBT.OUT)
+Dòng 1: Ghi duy nhất một số nguyên là giá trị của biểu thức.
Ví dụ:
GTBT.INP GTBT.OUT
12+23-45+6 -4
1234-998+123-345 14
Bài 4: Xếp diêm.
Bờm là một người rất thích chơi trò chơi xếp diêm. Từ các que diêm, Bờm có thể tạo ra các số theo cách xếp:
Một hôm khi Bờm đang ngồi xếp các chữ số thì Cuội đi qua. Cuội đố: “Tớ cho trước cậu n que diêm, cậu hãy xếp thành một số tự nhiên nhỏ nhất, một số tự nhiên lớn nhất từ n que diêm đó được không?”. Bờm suy nghĩ một lát rồi cũng nghĩ ra cách xếp. Vậy theo em, Bờm đã xếp như thế nào? Hãy lập trình để giải bài toán này nhé.
Yêu cầu: Cho trước n que diêm, hãy xếp n que diêm đó thành một số tự nhiên nhỏ nhất, một số tự nhiên lớn nhất có thể. (Lưu ý: Mọi số 0 đứng trước các số tự nhiên đều không có nghĩa)
Dữ liệu vào: (DIEM.INP)
+ Dòng 1: Ghi duy nhất một số tự nhiên n.
Dữ liệu ra: (DIEM.OUT)
+ Dòng 1: Ghi số tự nhiên nhỏ nhất xếp được.
+ Dòng 2: Ghi số tự nhiên lớn nhất xếp được.
Ví dụ:
DIEM.INP DIEM.OUT
18 208
11111111
25 2088
711111111111
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 |
|
BEEHIVE.INP | BEEHIVE.OUT |
4 | 37 |
SNAIL.INP | SNAIL.OUT |
2 1 5 | 4 |
Câu 1 (6,0 điểm): Tính giá trị
Nhập vào 2 số nguyên dương N và M.
Yêu cầu: Tính tổng M các số tận cùng của N.
Dữ liệu vào: Cho trong file văn bản CAU1.INP, có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N.
- Dòng 2: Ghi số nguyên dương M (M≤ N) .
Dữ liệu ra: Ghi ra file văn bản CAU1.OUT, theo cấu trúc như sau:
- Ghi kết quả tổng của M số tận cùng của N.
Ví dụ:
CAU1.INP |
CAU1.OUT |
34562 2 |
8 |
Câu 2 (7,0 điểm): Tìm số
Dãy các số tự nhiên được viết ra thành một dãy vô hạn trên đường thẳng:
1234567891011121314..... (1)
Yêu cầu: Viết chương trình yêu cầu nhập số K và in lên tệp CAU2.OUT kết quả là số nằm ở vị trí thứ K trong dãy (1) ở trên và số đó thuộc vào số nào?
Dữ liệu vào: Cho trong file văn bản CAU2.INP, có cấu trúc như sau:
- Ghi số nguyên dương K
Dữ liệu ra: Ghi ra file văn bản CAU2.OUT, theo cấu trúc như sau:
- Trên 1 dòng in kết quả số ở vị trí K và số chứa số đó cách nhau ít nhất một dấu cách.
Ví dụ:
CAU2.INP |
CAU2.OUT |
15 |
2 12 |
Câu 3 (7,0 điểm): Đếm ký tự
Cho một văn bản gồm N dòng. Các ký tự được lấy từ tập các chữ cái và chữ số.
Yêu cầu: Tìm số lượng ký tự của dòng ngắn nhất, số lượng ký tự của dòng dài nhất và số lượng ký tự của văn bản.
Dữ liệu vào: Cho trong file văn bản CAU3.INP, có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N là số dòng của văn bản (1 ≤ N ≤ 100).
- N dòng tiếp theo: Mỗi dòng ghi một xâu gồm L ký tự (0 < L < 255).
Dữ liệu ra: Ghi ra file văn bản CAU3.OUT, theo cấu trúc như sau:
- Dòng 1: Ghi 3 số nguyên dương x y z. Trong đó: x là số lượng ký tự của dòng ngắn nhất; y là số lượng ký tự của dòng dài nhất, z là số lượng ký tự của văn bản. Các số được ghi cách nhau ít nhất một dấu cách.
Ví dụ:
CAU3.INP |
CAU3.OUT |
3 ThiHSG09 Nam2015 Vong1 |
5 8 20 |