Đề th Olympc Tn học snh vên ĐẠI HỌC BÁCH KHOA HÀ NỘI - 0 Khố chuyên Tn Thờ gan: 80 phút TỔNG QUAN BÀI THI Tên bà Tên chương trình Fle dữ lệu vào Fle kết quả Bà Xếp cột trụ VOL.? VOL.INP VOL.OUT Bà Lật hộp ROT.? ROT.INP ROT.OUT Bà Số gần hoàn hảo QUASI.? QUASI.INP QUASI.OUT Chú ý: Dấu * được thay thế bở đuô ngầm định của ngôn ngữ được sử dụng để cà chương trình; Thí snh phả nộp cả fle mã nguồn của chương trình và fle chương trình thực hện (chương trình đã được bên dịch ra fle.exe). Hãy lập trình gả các bà toán sau đây: Bà. Xếp Cột trụ Cho một tập các hình trụ V = {V, V,, V n } trong đó: ) hình trụ V có chều cao h, bán kính r là các số nguyên thỏa mãn 0 < h, r < 0 6 (=,,,n) ) các hình trụ có bán kính đô một khác nhau. Các hình trụ có thể xếp chồng lên nhau để tạo thành một Cột trụ theo quy tắc: Chỉ hình trụ có bán kính nhỏ hơn có thể được xếp chồng lên trên hình trụ có bán kính lớn hơn, nghĩa là vớ mọ V, V V: V xếp chồng được lên trên V kh và chỉ kh r < r. Chều cao của Cột trụ là tổng chều cao của các hình trụ được xếp trong Cột trụ đó. Yêu cầu: Đố vớ chều cao h nguyên dương cho trước, tính số lượng hình trụ cần dùng ít nhất để xếp thành Cột trụ có chều cao không nhỏ hơn h. Dữ lệu: nhập từ tệp VOL.INP chứa nhều test: Dòng đầu tên của tệp gh số k cho bết số lượng các test. Các dòng tếp theo là dữ lệu của các test. Dữ lệu của một test bao gồm nhóm dòng có cấu trúc như sau: Dòng đầu tên của test chứa số n và h lần lượt là số lượng hình trụ và chều cao gớ hạn của Cột trụ n dòng tếp theo trong test, mỗ dòng chứa ha số h và r cách nhau bở dấu cách, cho bết chều cao và bán kính của hình trụ thứ trong test
Kết quả: xuất vào tệp VOL.OUT chứa nhều dòng, mỗ dòng là một số nguyên cho bết gá trị tương ứng vớ mỗ test, nếu không có cách xếp trụ n ra -. Ví dụ: VOL.INP 5 4 8 5 VOL.OUT - Bà. Lật hộp Xét khố hộp chữ nhật C có kích thước dịch chuyển trên mặt lướ G ( m n) gồm các ô vuông kích thước như hình vẽ. Khố hộp C dịch chuyển thông qua các quy tắc lật như sau: () Lật sao cho khố hộp chỉ quay quanh trục là đường thẳng đ qua một cạnh của đáy của hộp trong suốt quá trình lật hộp. Các trục quay bểu dễn bằng đường thẳng nét đậm. Trong suốt quá trình dịch chuyển Khố hộp C chỉ có ha trang thá nằm và đứng (hình vẽ) Trạng thá Khố hộp nằm Trạng thá Khố hộp đứng () Một lần lật hộp được tính là một bước dịch chuyển của Khố hộp C Các ô vuông trên lướ G có đặc đểm sau: () Ô màu đen và ô màu trắng, khố hộp C chỉ được lật vào ô màu trắng () Có một ô xuất phát O và một ô đích X (tô sọc, hình vẽ)
Yêu cầu: Đặt Khố hộp C ở trạng thá đứng (hình vẽ) tạ vị trí ô xuất phát O trên lướ G, tến hành các bước dịch chuyển Khố hộp C theo quy tắc lật () và () sao cho Khố hộp C đạt vị trí cuố cùng tạ ô X của lướ G trong trạng thá đứng. Trong các cách dịch chuyển Khố hộp C như vậy tìm cách dịch chuyển có số bước ít nhất. Dữ lệu: nhập từ tệp ROT.INP chứa nhều test: Dòng đầu tên của tệp gh số k cho bết số lượng các test. Các dòng tếp theo là dữ lệu của các test. Dữ lệu của một test bao gồm nhóm dòng có cấu trúc như sau: Dòng đầu tên của test chứa số 0 < m, n < 000 cách nhau bở dấu cách, cho bết kích thước lướ G m dòng tếp theo trong test, mỗ dòng chứa n ký tự * hoặc. trong đó * bểu dễn ô đen và. bểu dễn ô trắng của lướ Dòng tếp theo chứa ha số nguyên a và b cách nhau bở dấu cách, cho bết ô xuất phát O nằm ở hàng a và cột b của lướ G Dòng cuố cùng chứa ha số nguyên x và y cách nhau bở dấu cách, cho bết ô đích X nằm ở hàng x và cột y của lướ G Chú ý: chỉ số hàng, cột của lướ G được tính từ. Kết quả: xuất vào tệp ROT.OUT chứa nhều dòng, mỗ dòng là một số nguyên cho bết gá trị tương ứng vớ mỗ test, nếu không có cách dịch chuyển nào n ra -. Ví dụ: ROT.INP ROT.OUT 6 5 *...* **..* *...........*...**.* 4 4 4 4.... **.. *.*..... 4 4 4 -
Bà. Số gần hoàn hảo Trong bà toán này, chúng ta quan tâm đến tổng các ước số chặt của một số tự nhên. Các ước số chặt của một số tự nhên N là các số K nhỏ hơn hẳn N, sao cho N cha hết cho K. Ví dụ, tổng của các ước số của 8 là: S(8) = + + + 6 + 9 = Một số hoàn hảo N > 0 là số mà tổng các ước số chặt S(N) của nó chính bằng N. Ví dụ số 6 và 8 là các số hoàn hảo: S(6) = + + = 6 S(8) = + + 4 + 7 + 4 = 8 Thực chất các số hoàn hảo rất hếm. Vì vậy ở đây chúng ta quan tâm đến các số gần hoàn hảo, nghĩa là tổng các ước chặt của N không quá xa N. Yêu cầu: cho trước ha số tự nhên L và D ( L 000000, 0 D 000000) hãy tìm số các số nguyên dương nhỏ hơn L sao cho độ chênh lệch gữa nó và tổng các ước chặt của nó không vượt quá D. Ví dụ, vớ L = 0, D =, ta tìm được 5 số thoả mãn yêu cầu:, 4, 6 và 8. Dữ lệu: nhập từ QUASI.INP bao gồm dòng, dòng chứa số nguyên L và dòng chứa số nguyên K. Kết quả: gh ra QUASI.OUT duy nhất một số nguyên là số các số tìm được. QUASI.INP 0 QUASI.OUT 5 4
Đề th Olympc Tn học snh vên ĐẠI HỌC BÁCH KHOA HÀ NỘI - 0 Khố không chuyên Tn Thờ gan: 80 phút TỔNG QUAN BÀI THI Tên bà Tên chương trình Fle dữ lệu vào Fle kết quả Bà Số gần hoàn hảo QUASI.? QUASI.INP QUASI.OUT Bà Bến đổ xâu nhị phân SERIE.? SERIE.INP SERIE.OUT Bà Đoạn thẳng gao nhau SEG.? SEG.INP SEG.OUT Bà. Số gần hoàn hảo Trong bà toán này, chúng ta quan tâm đến tổng các ước số chặt của một số tự nhên. Các ước số chặt của một số tự nhên N là các số K nhỏ hơn hẳn N, sao cho N cha hết cho K. Ví dụ, tổng của các ước số của 8 là: S(8) = + + + 6 + 9 = Một số hoàn hảo N > 0 là số mà tổng các ước số chặt S(N) của nó chính bằng N. Ví dụ số 6 và 8 là các số hoàn hảo: S(6) = + + = 6 S(8) = + + 4 + 7 + 4 = 8 Thực chất các số hoàn hảo rất hếm. Vì vậy ở đây chúng ta quan tâm đến các số gần hoàn hảo, nghĩa là tổng các ước chặt của N không quá xa N. Yêu cầu: cho trước ha số tự nhên L và D ( L 000, 0 D 0000), hãy tìm số các số nguyên dương nhỏ hơn L sao cho độ chênh lệch gữa nó và tổng các ước chặt của nó không vượt quá D. Ví dụ, vớ L = 0, D =, ta tìm được 5 số thoả mãn yêu cầu:, 4, 6 và 8. Dữ lệu: nhập từ QUASI.INP bao gồm dòng, dòng chứa số nguyên L và dòng chứa số nguyên K. Kết quả: gh ra QUASI.OUT duy nhất một số nguyên là số các số tìm được. QUASI.INP 0 QUASI.OUT 5
Bà. Bến đổ xâu nhị phân Cho số nguyên dương n ( n ) và số nguyên dương k, k ( k k n). Một phép bến đổ Ω được thực hện trên xâu nhị phân w độ dà n như sau: Đảo bít (bến bt thành 0 và bt 0 thành ) một xâu con nào đó gồm k bít lên tếp (k k k ) của w. Yêu cầu: Cho xâu nhị phân độ dà n là s và t. Tìm số ít nhất các phép bến đổ Ω lên tếp để chuyển s về t. Ví dụ: n = 5, k =, k =, s = 0000 và t = 000. Các phép bến đổ sau đây là cách bến đổ tố ưu (số lượng ít nhất các phép bến đổ Ω lên tếp) để chuyển s về t: 0000 0000 000 Cách bến đổ này bao gồm phép bến đổ Ω Dữ lệu: nhập từ fle văn bản SERIE.INP vớ định dạng như sau: Dòng thứ gh số nguyên dương n, k, k cách nhau bở dấu cách Dòng thứ gh n bt của xâu s (các bt cách nhau bở dấu cách) Dòng thứ gh n bt của xâu t (các bt cách nhau bở dấu cách) Kết quả: Gh ra fle văn bản SERIE.OUT số lượng phép bến đổ ít nhất tìm được (chú ý: nếu không tìm được cách bến đổ nào để chuyển s về t thì gh gá trị -). SERIE.INP 5 SERIE.OUT 0 0 0 0 0 0 0
Bà. Đoạn thẳng gao nhau Xét tập đoạn thẳng S = S, S,..., S } (n là số nguyên thỏa mãn 0 < n < 0 6 ) cùng nằm trên trục { n Ox của hệ tọa độ Đề-các Oxy. Ký hệu cặp a, b > lần lượt là hoành độ của mút trá và mút phả < của đoạn S trong đó 0 a < b và a, b là các số nguyên ( =, n) Ha đoạn thẳng S < a, b >, S < a, b > S (, =, n) được gọ là gao nhau kh và chỉ kh tồn tạ đểm có hoành độ x là số thực thỏa mãn a < x < b a < x < b Yêu cầu: Tìm số lớn nhất các đoạn thẳng của tập S có cùng chung gao đểm P nào đó. Dữ lệu vào: nhập từ tệp SEG.INP chứa nhều test: Dòng đầu tên của tệp gh số k cho bết số lượng các test. Các dòng tếp theo là dữ lệu của các test. Dữ lệu của một test bao gồm nhóm dòng có cấu trúc như sau: Dòng đầu tên của test chứa số n cho bết số lượng đoạn thẳng trong test n dòng tếp theo trong test, mỗ dòng chứa ha số nguyên a và cách mô tả đoạn thẳng S a, b > < b cách nhau bở dấu Dữ lệu ra: xuất vào tệp SEG.OUT chứa nhều dòng, mỗ dòng là một số nguyên cho bết gá trị tương ứng vớ mỗ test. Ví dụ: SEG.INP 0 4 4 5 4 SEG.OUT 0