Bỏ qua để đến nội dung

Bảng B1 2019 - Vòng chung kết toàn quốc

HỘI THI TIN HỌC TRẺ TOÀN QUỐC
Lần thứ XXV – Năm 2019

ĐỀ THI BẢNG B1 – THCS
(Lập trình Pascal/C/C++)
Thời gian làm bài: 150 phút
Địa điểm thi: Đại học Quảng Bình, TP Đồng Hới, tỉnh Quảng Bình


Cho một số thực R. Tìm số lượng số nguyên ít nhất để trung bình cộng của chúng bằng R.

Dữ liệu: Sẽ có 10 test, mỗi test chứa một số thực R.

Kết quả: Với mỗi test, ghi ra số nguyên dương là số lượng nhỏ nhất các số nguyên thoả mãn đề bài. Nếu test nào không tìm thấy kết quả, để trống dòng của test đó.

Ví dụ: test R = 2.5 → kết quả 2 (2.5 là trung bình cộng của ít nhất 2 số nguyên, ví dụ trung bình cộng của 1 và 4 là 2.5).

Cho N phân số được xếp cạnh nhau theo một thứ tự cho trước. Hãy điền N−1 dấu phép tính: cộng, trừ hoặc nhân (+, −, ×) để được biểu thức có kết quả là một phân số R cho trước.

Dữ liệu nhập vào sẽ có 10 test, mỗi test sẽ có định dạng như sau: dòng đầu tiên chứa các phân số, các phân số cách nhau bởi dấu cách. Dòng thứ 2 chứa một phân số là kết quả của biểu thức. Tử số và phân số phân cách bởi dấu chia ”/”.

Em cần tạo file văn bản PHANSO.TXT gồm 10 dòng, mỗi dòng gồm lần lượt các kí tự dấu phép tính của biểu thức từ trái qua phải tương ứng với dữ liệu cho trong bảng dưới đây. Dữ liệu cho đảm bảo luôn có kết quả. Mỗi dòng ghi kết quả của test tương ứng. Nếu test nào không tìm thấy kết quả, để trống dòng của test đó.

TestInput (các phân số / kết quả R)
11/2 1/3 3/4 / 1/4
25/2 4/6 3/8 -2/3 / 19/12
33/4 -2/7 -3/14 1/2 -2/1 / -10/7
45/6 1/9 3/2 -2/2 2/3 1/6 / 7/6
52/9 3/4 -5/8 -2/3 7/3 1/9 / 29/72
61/4 2/3 3/2 4/1 -1/4 -2/3 -3/2 -4/1 / -13/12
7-1/16 12/24 3/12 10/8 2/6 -14/18 5/3 -5/2 / 137/36
81/2 2/3 3/4 4/5 5/6 6/7 7/8 8/9 9/10 10/11 11/12 12/13 / -363401/90090

Giải thích test 1: 1/2 − 1/3 × 3/4 = 1/4.

Chú ý: kí tự dấu phép nhân là chữ X viết hoa.

Cho ba số nguyên dương N, K và V. Xét các cặp số nguyên dương (a,b) thoả mãn a,b ≤ N và a×b chia hết cho K. Giá trị cặp được định nghĩa bằng tổng hai số của cặp số đó. Ta sắp xếp các cặp số theo giá trị cặp không giảm, nếu giá trị cặp bằng nhau thì xếp theo thứ tự tăng dần của phần tử thứ nhất của cặp số đó. Yêu cầu: tìm ra cặp số thứ V trong dãy cặp số đã được sắp xếp đó.

Ví dụ: N=4, K=3, V=6.

Các cặp số thoả mãn là: (1,3), (2,3), (3,1), (3,2), (3,3), (3,4), (4,3).

Sắp xếp các cặp số: (1,3), (3,1), (2,3), (3,2), (3,3), (3,4), (4,3).

Vậy cặp số thứ 6 là (3,4).

Dữ liệu nhập vào sẽ có 10 test, mỗi test chứa 3 số nguyên dương N, K và V.

Em cần tạo file văn bản TIMCAP.TXT gồm 10 dòng, mỗi dòng ghi hai số nguyên dương là cặp số theo yêu cầu tương ứng với mỗi test (các số cách nhau bởi dấu cách) được cho trong bảng dưới đây. Dữ liệu cho đảm bảo luôn có kết quả. Mỗi dòng ghi kết quả của test tương ứng. Nếu test nào không tìm thấy kết quả, để trống dòng của test đó.

TestNKVTIMCAP.TXT
14363 4
2505100
3102181000
4245128000
588824123456
6999997777777
7303033030303030
8555555999999999
91707191012345678
1012345676987654321

Viết chương trình vẽ 2 quạt theo mẫu sau (quạt 3 cánh và quạt 5 cánh, mỗi cánh có số thứ tự 0, 1, 2, 3 cạnh chân quạt để chỉ hướng quay).

Yêu cầu bắt buộc:

  • Chân quạt có chiều cao đúng bằng bán kính vòng tròn cánh quạt.
  • Đế quạt dài bằng 2/3 đường kính vòng tròn quạt.
  • Các nút tốc độ do thí sinh tự thiết kế bao gồm 3 tốc độ và nút tắt. Khi nháy lên nút tốc độ thì cánh quạt sẽ quay với đúng tốc độ đó, số càng cao quay càng nhanh. Nút 0 là dừng quay. Yêu cầu mô tả quạt quay càng giống thực tế càng tốt.
  • Cần viết chương trình đủ tổng quát để có thể thay đổi bán kính mỗi quạt trên hình.

Chương trình được lưu thành tệp B1.sb2/sb3. (Thí sinh được cung cấp hình ảnh hai loại cánh quạt trên.)

Cho trước một dãy số bất kỳ a1, a2, …, aN. Bài toán sắp xếp dãy số là sắp xếp lại dãy này theo thứ tự tăng dần (hoặc giảm dần). Ví dụ sau khi sắp xếp thì dãy trên sẽ thỏa mãn: a1 ≤ a2 ≤ ..... ≤ aN.

Thao tác lõi của việc sắp xếp dãy số là đổi vị trí 2 số ai và aj. Ta gọi thao tác này là đổi chỗ 2 vị trí i và j. Do vấy đề mô tả công việc sắp xếp một dãy số, người ta thường liệt kê các thao tác đổi chỗ các cặp vị trí (i, j) của dãy này.

Viết chương trình mô tả công việc sắp xếp một dãy số như sau:

  • Dãy số ban đầu được nhập từ bàn phím: nhập số N, sau đó lần lượt nhập N số a1, a2, …, aN của dãy cần sắp xếp.
  • Giáo viên thông báo dãy số trên màn hình.
  • Người dùng bấm Space để bắt đầu thực hiện sắp xếp.
  • Học sinh thông báo kết quả: đã thực hiện bao nhiêu phép đổi chỗ 2 phần tử, liệt kê lần lượt các phép đổi chỗ đó và kết quả dãy thu được.

Chương trình lưu với tên B2-1.sb2/sb3.

Ứng dụng: Mô phỏng sắp xếp dãy số một cách tường minh.

Trong chương trình này, mỗi số được mô phỏng bởi một hình tròn. Kích thước hình tròn mô tả giá trị của số tương ứng. Công việc sắp xếp dãy số sẽ được mô phỏng bằng dãy các phép đổi vị trí 2 hình tròn trên màn hình.

Yêu cầu của chương trình ứng dụng mô phỏng như sau:

  • Chương trình sẽ tự động sinh ngẫu nhiên một dãy các số tự nhiên khác nhau từng đôi một và có giá trị nằm trong khoảng từ 10 đến 100. Số lượng phần tử của dãy nằm trong khoảng từ 5 đến 20.
  • Chương trình sẽ thể hiện dãy số trên thông qua một dãy các hình tròn. Giá trị của các số trong dãy sẽ tỷ lệ với kích thước của các hình tròn theo nghĩa: số càng lớn sẽ tương ứng với hình tròn càng lớn.
  • Giáo viên sẽ thông báo dãy số trên màn hình và yêu cầu người dùng bấm Space để bắt đầu quá trình mô phỏng sắp xếp. Màn hình ban đầu thể hiện như hình sau. Dãy các hình tròn gốc nằm phía dưới màn hình.
  • Sau khi người dùng bấm Space, chương trình bắt đầu mô phỏng thao tác đổi vị trí 2 số bằng cách di chuyển 2 hình tròn hoán đổi vị trí cho nhau.
  • Khi kết thúc, dãy các hình tròn đã được sắp xếp lại chính xác.

Chương trình ứng dụng đặt tên B2-2.sb2/sb3.

Em là nhân vật chính của trò chơi cần phải chạy liên tục qua các địa hình khác nhau. Trên đường chạy của mình, em sẽ gặp rất nhiều sông và phải vượt qua. Rất may phía trên luôn có các quả bóng chuyển động, em cần nhảy lên bám chính xác vào một quả bóng để bay qua được sông này. Nếu em bị ngã xuống nước hoặc nếu quả bóng em đang bám vào bị vỡ thì em sẽ thua và chương trình dừng lại ngay lập tức.

Nhiệm vụ của em là trong thời gian 60 giây phải điều khiển nhân vật chính vượt qua được nhiều sông nhất có thể. Nếu sau 60 giây nhân vật chính vẫn sống thì em đã thắng trong trò chơi này.

Hãy thiết kế chương trình mô phỏng trò chơi Vượt sông với các yêu cầu cụ thể như sau:

  • Mỗi địa hình là một sân khấu. Em cần thiết kế trong mỗi sân khấu có một con sông. Vị trí các con sông khác nhau với mỗi địa hình. Chú ý thiết kế mặt đất của các nền sân khấu phải luôn cùng tọa độ ngang (tọa độ y).
  • Phía trên màn hình luôn xuất hiện ngẫu nhiên các quả bóng, di chuyển hoặc từ trái sang phải, hoặc từ phải sang trái. Khi một quả bóng di chuyển đến cạnh đối diện, nó sẽ tự vỡ và biến mất.
  • Trạng thái ban đầu của trò chơi như Hình 1. Nhân vật chính xuất phát từ phía trái màn hình.
  • Bấm Space để bắt đầu trò chơi. Nhân vật chính sẽ phải liên tục chạy từ trái sang phải, khi hết màn hình thì xuất hiện lại từ bên trái để chuyển sang một địa hình khác, cứ như vậy tiếp tục.
  • Trong khi chạy, để tránh ngã xuống sông, em cần bấm Space để nhân vật chính nhảy lên. Mỗi lần chỉ được nhảy lên đúng một lần, khi rơi xuống đất thì mới được nhảy lần tiếp theo. Mỗi lần nhảy lên, nhân vật chính sẽ bị rơi xuống đúng chỗ cũ theo lực hút trái đất.
  • Khi nhảy lên gặp một quả bóng đang di chuyển thì nhân vật sẽ bám ngay vào quả bóng này và di chuyển theo quả bóng đó. Khi đã bám vào được một quả bóng thì không thể nhảy sang quả bóng khác.
  • Trong khi bám vào bóng nếu bấm Space lần thứ hai thì nhân vật chính sẽ rời bóng và rơi xuống đất (để chạy tiếp). Chú ý nếu rơi xuống sông hay bóng vỡ thì chương trình lập tức dừng lại, xuất hiện thông báo “Thua rồi”.
  • Chương trình sẽ đếm số lượt em vượt qua được các con sông. Số lượng sông đã vượt qua được ghi tại góc trái trên màn hình.
  • Sau đúng 60 giây, chương trình sẽ dừng lại và thông báo “Bạn đã thắng”.

Em cần khéo léo điều khiển nhân vật sao cho dành chiến thắng và vượt qua nhiều sông nhất có thể.

Em hãy viết chương trình mô tả trò chơi trên. Ghi tệp chương trình B3.sb2/sb3.

Yêu cầu bắt buộc:

  • Số lượng nền sân khấu tối thiểu là 5.
  • Mỗi lần nhân vật chính nhảy lên sẽ chạm trần trên của màn hình nên đảm bảo sẽ bám được vào bất kỳ quả bóng nào đang bay ở trên.