Câu 1: Số nguyên tố lớn hơn (4 điểm) Tên tập tin chương trình: PRIMEMORE.??? Trong một thuật toán mã hóa, người ta thường dùng 2 số nguyên tố để làm khóa mã hóa và khóa giải mã. Khi gửi tài liệu đã được mã hóa, khóa giải mã sẽ được gửi kèm theo. Để tránh bị lộ, người ta chỉ gửi một số nguyên dương N khá lớn và quy ước rằng khóa giải mã X sẽ là số nguyên tố nhỏ nhất và lớn hơn N. Yêu cầu: viết chương trình tìm khóa giải mã X. Dữ liệu: vào từ tập tin văn bản PRIMEMORE.INP số nguyên dương N (N ≤ 1012). Kết quả: đưa ra tập tin văn bản PRIMEMORE.OUT giá trị của khóa giải mã X tìm được. Tên tập tin chương trình: MULTIPLE.??? Trong môn Tin học đại cương, Nam đã học về thuật toán Euclid tìm ước số chung lớn nhất (USCLN) của 2 số tự nhiên A, B không đồng thời bằng 0 và cách tính bội số chung nhỏ nhất (BSCNN) dựa vào USCLN theo công thức: ( , ) ( , ) USCLN A B A B BSCNN A B = Đến buổi thực hành, Nam cần viết một chương trình về vấn đề đã học. Yêu cầu: tìm BSCNN(A, B). Dữ liệu: vào từ tập tin văn bản MULTIPLE.INP 2 số tự nhiên A, B không đồng thời bằng 0 (A, B ≤ 109). Kết quả: đưa ra tập tin văn bản MULTIPLE.OUT giá trị của BSCNN(A, B). Câu 3: Số dư khi chia cho 13 (2 điểm) Tên tập tin chương trình: REMAIN13.??? Để tìm số dư khi chia một số nguyên dương N (không quá lớn) cho 13, người ta có thể dùng cách chia trực tiếp. Tuy nhiên, với các số nguyên dương rất lớn, có thể lên tới hàng trăm chữ số, cách chia trực tiếp là không hợp lý. Khi đó, người ta sử dụng quy tắc đồng dư theo cách nhóm từng bộ 6 chữ số như sau: Ví dụ: với N = 45100001100002100003 Số dư khi chia N cho 13 = (Số dư khi chia 45 cho 13) + (Số dư khi chia 100001 cho 13) + (Số dư khi chia 100002 cho 13) + (Số dư khi chia 100003 cho 13) = Số dư khi chia (6 + 5 + 6 + 7) cho 13 = 11 Yêu cầu: viết chương trình tìm số dư của N khi chia cho 13 theo quy tắc đồng dư trên. Dữ liệu: vào từ tập tin văn bản REMAIN13.INP số nguyên dương N (N ≤ 10200). Kết quả: đưa ra tập tin văn bản REMAIN13.OUT số dư khi chia N cho 13.
PHÊ DUYỆT CHỦ NHIỆM KHOA Đại tá, ThS Nguyễn Văn Khiêm KHOA CÔNG NGHỆ THÔNG TIN Kỳ thi: Học viên sinh viên giỏi môn Tin học Đối tượng: Cao đẳng Đại học Khơng chun tin Hình thức: Thực hành Thời gian: 120 phút ĐỀ SỐ 01 Câu 1: Số nguyên tố lớn (4 điểm) Tên tập tin chương trình: PRIMEMORE.??? Trong thuật tốn mã hóa, người ta thường dùng số nguyên tố để làm khóa mã hóa khóa giải mã Khi gửi tài liệu mã hóa, khóa giải mã gửi kèm theo Để tránh bị lộ, người ta gửi số nguyên dương N lớn quy ước khóa giải mã X số nguyên tố nhỏ lớn N Yêu cầu: viết chương trình tìm khóa giải mã X Dữ liệu: vào từ tập tin văn PRIMEMORE.INP số nguyên dương N (N ≤ 1012) Kết quả: đưa tập tin văn PRIMEMORE.OUT giá trị khóa giải mã X tìm Ví dụ: PRIMEMORE.INP PRIMEMORE.OUT 1000000000 1000000007 Câu 2: Bội số chung nhỏ (4 điểm) Tên tập tin chương trình: MULTIPLE.??? Trong môn Tin học đại cương, Nam học thuật tốn Euclid tìm ước số chung lớn (USCLN) số tự nhiên A, B không đồng thời cách tính bội số chung nhỏ (BSCNN) dựa vào USCLN theo công thức: A* B BSCNN ( A, B) = USCLN ( A, B) Đến buổi thực hành, Nam cần viết chương trình vấn đề học Yêu cầu: tìm BSCNN(A, B) Dữ liệu: vào từ tập tin văn MULTIPLE.INP số tự nhiên A, B không đồng thời (A, B ≤ 109) Kết quả: đưa tập tin văn MULTIPLE.OUT giá trị BSCNN(A, B) Ví dụ: MULTIPLE.INP MULTIPLE.OUT 20334 360237144 35432 Câu 3: Số dư chia cho 13 (2 điểm) Tên tập tin chương trình: REMAIN13.??? Để tìm số dư chia số nguyên dương N (khơng q lớn) cho 13, người ta dùng cách chia trực tiếp Tuy nhiên, với số nguyên dương lớn, lên tới hàng trăm chữ số, cách chia trực tiếp không hợp lý Khi đó, người ta sử dụng quy tắc đồng dư theo cách nhóm chữ số sau: Ví dụ: với N = 45100001100002100003 Số dư chia N cho 13 = (Số dư chia 45 cho 13) + (Số dư chia 100001 cho 13) + (Số dư chia 100002 cho 13) + (Số dư chia 100003 cho 13) = Số dư chia (6 + + + 7) cho 13 = 11 Yêu cầu: viết chương trình tìm số dư N chia cho 13 theo quy tắc đồng dư Dữ liệu: vào từ tập tin văn REMAIN13.INP số nguyên dương N (N ≤ 10200) Kết quả: đưa tập tin văn REMAIN13.OUT số dư chia N cho 13 Ví dụ: REMAIN13.INP REMAIN13.OUT 45100001100002100003 11 Học viên - sinh viên không sử dụng tài liệu PHÊ DUYỆT CHỦ NHIỆM KHOA Đại tá, ThS Nguyễn Văn Khiêm KHOA CÔNG NGHỆ THÔNG TIN Kỳ thi: Học viên sinh viên giỏi môn Tin học Đối tượng: Cao đẳng Đại học Khơng chun tin Hình thức: Thực hành Thời gian: 120 phút ĐỀ SỐ 02 Câu 1: Số nguyên tố nhỏ (4 điểm) Tên tập tin chương trình: PRIMELESS.??? Trong thuật tốn mã hóa, người ta thường dùng số nguyên tố để làm khóa mã hóa khóa giải mã Khi gửi tài liệu mã hóa, khóa giải mã gửi kèm theo Để tránh bị lộ, người ta gửi số nguyên dương N (có thể lớn) quy ước khóa giải mã X số nguyên tố lớn nhỏ N Yêu cầu: viết chương trình tìm khóa giải mã X Dữ liệu: vào từ tập tin văn PRIMELESS.INP số nguyên dương N (2 < N ≤ 1012) Kết quả: đưa tập tin văn PRIMELESS.OUT giá trị khóa giải mã X tìm Ví dụ: PRIMELESS.INP PRIMELESS.OUT 1000000000 999999937 Câu 2: Minh họa thuật toán Euclid (4 điểm) Tên tập tin chương trình: EUCLID.??? Trong mơn Tin học đại cương, Nam học thuật tốn Euclid tìm ước số chung lớn (USCLN) số tự nhiên A, B không đồng thời theo mô tả đệ quy: • USCLN(A, 0) = A • USCLN(A, B) = USCLN(B, A mod B) B khác Trong đó: A mod B số dư chia A cho B Để giúp bạn lớp hiểu rõ thuật toán Euclid, đến buổi thực hành, Nam định viết chương trình minh họa trình thực thuật toán học Yêu cầu: minh họa trình thực thuật tốn Euclid Dữ liệu: vào từ tập tin văn EUCLID.INP số tự nhiên A, B không đồng thời (A, B ≤ 109) Kết quả: đưa tập tin văn EUCLID.OUT, gồm nhiều dòng: - Dòng 1: USCLN(A, B), với A, B giá trị ban đầu - Các dòng tiếp theo: = USCLN(B, A mod B), với B, A mod B giá trị trung gian bước minh họa - Dòng cuối cùng: = Ví dụ: EUCLID.INP EUCLID.OUT 123 USCLN(123, 132) 132 = USCLN(132, 123) = USCLN(123, 9) = USCLN(9, 6) = USCLN(6, 3) = USCLN(3, 0) =3 Câu 3: Số dư chia cho 11 (2 điểm) Tên tập tin chương trình: REMAIN11.??? Để tìm số dư chia số nguyên dương N (không lớn) cho 11, người ta dùng cách chia trực tiếp Tuy nhiên, với số nguyên dương lớn, lên tới hàng trăm chữ số, cách chia trực tiếp khơng hợp lý Khi đó, người ta sử dụng quy tắc đồng dư theo cách nhóm chữ số sau: Ví dụ: với N = 45100001100002100003 Số dư chia N cho 11 = (Số dư chia 45 cho 11) + (Số dư chia 100001 cho 11) + (Số dư chia 100002 cho 11) + (Số dư chia 100003 cho 11) = Số dư chia (1 + + + 2) cho 11 =4 Yêu cầu: viết chương trình tìm số dư N chia cho 11 theo quy tắc đồng dư Dữ liệu: vào từ tập tin văn REMAIN11.INP số nguyên dương N (N ≤ 10200) Kết quả: đưa tập tin văn REMAIN11.OUT số dư chia N cho 11 Ví dụ: REMAIN11.INP REMAIN11.OUT 45100001100002100003 Học viên - sinh viên không sử dụng tài liệu PHÊ DUYỆT CHỦ NHIỆM KHOA Đại tá, ThS Nguyễn Văn Khiêm KHOA CÔNG NGHỆ THÔNG TIN Kỳ thi: Học viên sinh viên giỏi môn Tin học Đối tượng: Đại học Chuyên tin Hình thức: Thực hành Thời gian: 120 phút ĐỀ SỐ 01 Câu 1: Số dư chia cho (4 điểm) Tên tập tin chương trình: REMAIN3.??? Để tìm số dư chia số nguyên dương N (không lớn) cho 3, người ta dùng cách chia trực tiếp Tuy nhiên, với số nguyên dương lớn, lên tới hàng trăm chữ số, cách chia trực tiếp không hợp lý Khi quy tắc đồng dư sau sử dụng: "Số dư số N chia cho = số dư X chia cho với X tổng chữ số N" Ví dụ: với N = 11234567800000, tổng chữ số N là: X = 1+1+2+3+4+5+6+7+8+0+0+0+0+0 = 37 Số dư chia N cho = Số dư chia 37 cho = Yêu cầu: viết chương trình tìm số dư N chia cho theo quy tắc đồng dư Dữ liệu: vào từ tập tin văn REMAIN3.INP số nguyên dương N (N ≤ 10200) Kết quả: đưa tập tin văn REMAIN3.OUT số dư chia N cho Ví dụ: REMAIN3.INP REMAIN3.OUT 11234567800000 Câu 2: Bản đồ mật độ mìn (4 điểm) Tên tập tin chương trình: MINESMAP.??? Trong trò chơi dò mìn Minesweeper, đồ mìn hình chữ nhật gồm nhiều vng nhỏ, có giá trị có mìn, có giá trị khơng có mìn Từ đồ mìn cho trước, đồ mật độ mìn tạo ra, có giá trị * có mìn, có giá trị số X từ đến khơng có mìn có X có mìn kề với Với tập lớn xây dựng trò chơi dò mìn Minesweeper, Nam cần viết chương trình tạo đồ mật độ mìn từ đồ mìn cho trước Yêu cầu: tìm đồ mật độ mìn Dữ liệu: vào từ tập tin văn MINESMAP.INP, gồm nhiều dòng: - Dòng 1: số nguyên dương M, N (9 ≤ M, N ≤ 30) - M dòng tiếp theo: dòng chứa N số nhị phân (0, 1) đánh dấu có khơng có mìn đồ mìn kích thước M x N Kết quả: đưa tập tin văn MINESMAP.OUT đồ mật độ mìn Các giá trị dòng cách khoảng trắng Ví dụ: MINESMAP.INP MINESMAP.OUT 99 2**210011 011000000 *45*2001* 100100001 12**20022 001100000 01233222* 000000001 0001**2*2 000011010 000122211 000000000 000000000 000010100 001000001 000112110 0112*2*21 01*21212* Câu 3: Trò chơi dò mìn (2 điểm) Tên tập tin chương trình: CLICK.??? Trong trò chơi dò mìn Minesweeper, đồ mật độ mìn tạo ra, có giá trị * có mìn, có giá trị số X từ đến khơng có mìn có X có mìn kề với Thao tác nhấn chuột trái trò chơi Minesweeper vào đồ mật độ mìn (bị che kín) xảy trường hợp sau: - Nếu gặp có mìn mìn nổ - Nếu gặp có số dương mở - Ngược lại, gặp có số mở vùng, vùng bao gồm khơng có mìn với biên vùng có số dương, biên đồ mật độ mìn Ví dụ với đồ mật độ mìn là: * * 0 1 * * 0 1 * * 0 * * * 0 * * * 0 2 * * 0 2 3 2 * 3 2 * 0 * * * 0 * * * 0 2 1 0 2 1 0 1 1 0 0 1 1 0 1 * * 1 * * 1 * 2 * * 2 * nhấn vào (2, 6) có 16 bị mở Để thuận tiện cho việc đọc liệu để xử lý, tập tin liệu vào, có mìn (*) thay giá trị 9! Với tập lớn xây dựng trò chơi dò mìn Minesweeper, Nam cần viết chương trình mơ tả thao tác nhấn chuột trái trò chơi Minesweeper Yêu cầu: đếm số ô mở nhấn chuột trái vào ô xác định đồ mật độ mìn cho trước Dữ liệu: vào từ tập tin văn CLICK.INP, gồm nhiều dòng: - Dòng 1: số nguyên dương M, N (9 ≤ M, N ≤ 30) kích thước đồ mật độ mìn - Dòng 2: số nguyên dương A, B (1 ≤ A ≤ M, ≤ B ≤ N) số hàng cột ô bị nhấn chuột trái - M dòng tiếp theo: dòng chứa N chữ số thập phân (0 ÷ 9) biểu diễn đồ mật độ mìn kích thước M x N Kết quả: đưa tập tin văn CLICK.OUT số ô bị mở Các giá trị dòng cách khoảng trắng Ví dụ: CLICK.INP CLICK.OUT 99 16 26 299210011 945920019 129920022 012332229 000199292 000122211 000112110 011292921 019212129 Học viên - sinh viên không sử dụng tài liệu PHÊ DUYỆT CHỦ NHIỆM KHOA Đại tá, ThS Nguyễn Văn Khiêm KHOA CÔNG NGHỆ THÔNG TIN Kỳ thi: Học viên sinh viên giỏi môn Tin học Đối tượng: Đại học Chuyên tin Hình thức: Thực hành Thời gian: 120 phút ĐỀ SỐ 02 Câu 1: Số dư chia cho (4 điểm) Tên tập tin chương trình: REMAIN9.??? Để tìm số dư chia số nguyên dương N (khơng q lớn) cho 9, người ta dùng cách chia trực tiếp Tuy nhiên, với số nguyên dương lớn, lên tới hàng trăm chữ số, cách chia trực tiếp không hợp lý Khi quy tắc đồng dư sau sử dụng: "Số dư số N chia cho = số dư X chia cho với X tổng chữ số N" Ví dụ: với N = 11234567800000, tổng chữ số N là: X = 1+1+2+3+4+5+6+7+8+0+0+0+0+0 = 37 Số dư chia N cho = Số dư chia 37 cho = Yêu cầu: viết chương trình tìm số dư N chia cho theo quy tắc đồng dư Dữ liệu: vào từ tập tin văn REMAIN9.INP số nguyên dương N (N ≤ 10200) Kết quả: đưa tập tin văn REMAIN9.OUT số dư chia N cho Ví dụ: REMAIN9.INP REMAIN9.OUT 11234567800000 Câu 2: Phân tích số (4 điểm) Tên tập tin chương trình: ANALYSIS.??? Trong học mơn Tốn, nhóm Nam tranh luận cách phân tích số nguyên dương N thành tổng số nguyên dương A, B cho tích P = A2 * B2 đạt cực đại Để chứng minh kết phân tích đúng, Nam định viết chương trình minh họa cho tốn Yêu cầu: liệt kê tất kết phân tích số N theo thứ tự tăng dần giá trị tích P, giá trị P xuất lần Dữ liệu: vào từ tập tin văn ANALYSIS.INP số nguyên dương N (1 < N ≤ 103) Kết quả: đưa tập tin văn ANALYSIS.OUT giá trị tích P, số cách khoảng trắng Ví dụ: ANALYSIS.INP ANALYSIS.OUT 25 64 81 Câu 3: Trò chơi dò mìn (2 điểm) Tên tập tin chương trình: CLICK.??? Trong trò chơi dò mìn Minesweeper, đồ mật độ mìn tạo ra, có giá trị * có mìn, có giá trị số X từ đến ô khơng có mìn có X có mìn kề với Thao tác nhấn chuột trái trò chơi Minesweeper vào ô đồ mật độ mìn (bị che kín) xảy trường hợp sau: - Nếu gặp có mìn mìn nổ - Nếu gặp có số dương mở ô - Ngược lại, gặp ô có số mở vùng, vùng bao gồm khơng có mìn với biên vùng ô số, biên đồ mật độ mìn Ví dụ với đồ mật độ mìn là: * * 0 0 * * 0 0 * 3 0 0 * 3 0 0 * 1 1 * 1 1 3 * 1 * 3 * 1 * * * 2 2 * * 2 * * * * * * * 0 * 2 * 0 * 1 1 * 1 1 * 0 0 * 1 0 0 * 1 nhấn vào ô (3, 7) có 21 bị mở Để thuận tiện cho việc đọc liệu để xử lý, tập tin liệu vào, có mìn (*) thay giá trị 9! Với tập lớn xây dựng trò chơi dò mìn Minesweeper, Nam cần viết chương trình mơ tả thao tác nhấn chuột trái trò chơi Minesweeper Yêu cầu: đếm số ô mở nhấn chuột trái vào ô xác định đồ mật độ mìn cho trước Dữ liệu: vào từ tập tin văn CLICK.INP, gồm nhiều dòng: - Dòng 1: số nguyên dương M, N (9 ≤ M, N ≤ 30) kích thước đồ mật độ mìn - Dòng 2: số nguyên dương A, B (1 ≤ A ≤ M, ≤ B ≤ N) số hàng cột ô bị nhấn chuột trái - M dòng tiếp theo: dòng chứa N chữ số thập phân (0 ÷ 9) biểu diễn đồ mật độ mìn kích thước M x N Kết quả: đưa tập tin văn CLICK.OUT số ô bị mở Các giá trị dòng cách khoảng trắng Ví dụ: CLICK.INP CLICK.OUT 21 99 37 292910000 933210000 129211011 133391019 299212132 943102939 291002942 111012391 000019211 Học viên - sinh viên không sử dụng tài liệu ... THÔNG TIN Kỳ thi: Học viên sinh viên giỏi môn Tin học Đối tượng: Cao đẳng Đại học Khơng chun tin Hình thức: Thực hành Thời gian: 120 phút ĐỀ SỐ 02 Câu 1: Số nguyên tố nhỏ (4 điểm) Tên tập tin chương... CÔNG NGHỆ THÔNG TIN Kỳ thi: Học viên sinh viên giỏi môn Tin học Đối tượng: Đại học Chuyên tin Hình thức: Thực hành Thời gian: 120 phút ĐỀ SỐ 01 Câu 1: Số dư chia cho (4 điểm) Tên tập tin chương trình:... CÔNG NGHỆ THÔNG TIN Kỳ thi: Học viên sinh viên giỏi môn Tin học Đối tượng: Đại học Chuyên tin Hình thức: Thực hành Thời gian: 120 phút ĐỀ SỐ 02 Câu 1: Số dư chia cho (4 điểm) Tên tập tin chương trình: