Đề thi học sinh giỏi cấp tỉnh môn Tin học lớp 12 năm 2016 (có đáp án chi tiết)

18 3.9K 29
Đề thi học sinh giỏi cấp tỉnh môn Tin học lớp 12 năm 2016 (có đáp án chi tiết)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đề thi học sinh giỏi cấp tỉnh môn Tin học lớp 12 năm học 2016 2017 tỉnh Hải Dương: 2 đề chính thức V1 V2 có hướng dẫn chấm chi tiết. Ngày thi 8.10.2016. Tài liệu phục vụ luyện thi học sinh giỏi môn Tin học.

SỞ GIÁO DỤC VÀ ĐÀO TẠO HẢI DƯƠNG KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 12 NĂM HỌC 2016 - 2017 Môn: Tin học Thời gian làm bài: 180 phút (không kể thời gian giao đề) (Đề thi gồm 05 bài 03 trang) Ngày thi: thứ Bảy, ngày 08/10/2016 ĐỀ CHÍNH THỨC Tổng quan thi đề TT File Chương trình BAI1.* BAI2.* BAI3.* BAI4.* BAI5.* Tên VAT Xếp Đếm Dãy Dãy hàng cặp số chia hết nhị phân Dữ liệu nhập (input) bàn phím bàn phím bàn phím BAI4.INP BAI5.INP Dữ liệu xuất (output) hình hình hình BAI4.OUT BAI5.OUT Thời gian 1s 1s 1s 1s 1s Điểm 2.5 2.5 2.0 1.5 1.5 Chú ý: - Dấu * là phần mở rộng File chương trình là PAS CPP tùy theo ngôn ngữ lập trình sử dụng là Pascal C++ - Chương trình in kết theo yêu cầu đề bài, không in thông tin nào khác - Chương trình sử dụng lệnh in (write, writeln Passcal; printf (…), cout C++) để in kết - Đối với bài tập đọc và in liệu từ file văn bản, tên file này phải đặt đúng theo yêu cầu đề bài, đường dẫn phía trước Viết chương trình giải toán sau: Bài VAT Lan nhân viên công ty, Lan vừa giao nhiệm vụ mua số thiết bị để phục vụ cho phòng chức Lan nhận khoản kinh phí định để mua hàng, thiết bị Lan mua có giá khác Vì mua hàng Lan không lấy hóa đơn, nên giao bảng kê chi phí cho kế toán công ty Lan yêu cầu phải thống kê giá gốc thiết bị, chi phí thuế VAT cho thiết bị Bạn giúp Lan thống kê giá gốc thuế VAT phải nộp cho thiết bị mua, biết thiết bị Lan mua chịu mức thuế VAT 10% giá gốc Dữ liệu: Nhập từ bàn phím số nguyên N (0≤N≤109) tổng tiền mà Lan mua hàng Kết quả: In hình hai giá trị giá gốc thuế VAT, số gồm hai chữ số thập phân, cách dấu cách Ví dụ: Dữ liệu nhập Dữ liệu xuất 4.55 0.45 Ghi chú: Bài chấm qua 10 test, test 0,25 điểm Bài Xếp hàng Một kho chứa hàng hình chữ nhật có chiều dài, rộng, cao d 1, r1, c1 Công ty vừa nhập lô hàng gồm hai thùng hàng có chiều dài, rộng, cao d 2, r2, c2, d3, r3, c3 Vì hàng dễ vỡ nên không xếp chồng lên mà xếp cạnh xếp trước, sau, xếp dựng đứng, cạnh thùng hàng song song với cạnh kho chứa hàng Bạn giúp chủ kho kiểm tra xem kích thước lô hàng xếp vào kho hay không? Trang: Dữ liệu: Nhập từ bàn phím lần lượt: - Dòng 1: Ba số nguyên d1, r1, c1 (0 < d1, r1, c1 < 106) - Dòng 2: Ba số nguyên d2, r2, c2; (0 < d2, r2, c2 < 106) - Dòng 3: Ba số nguyên d3, r3, c3 (0 < d3, r3, c3 < 106) Kết quả: Đưa thông báo: YES có thể; NO Ví dụ: Dữ liệu nhập 2 3 3 Dữ liệu xuất YES Ghi chú: Bài chấm qua 10 test, test 0,25 điểm Bài Đếm cặp số Vào toán, thầy Dũng viết hai dãy số thành hai cột bảng Cột thứ viết số nguyên từ đến cột thứ hai viết số nguyên từ đến Câu hỏi thầy Dũng sau: Hãy đếm xem có cách chọn hai số số viết cột thứ số viết cột thứ hai cho tổng với chia hết cho 5? Là học sinh giỏi tin học lớp, bạn viết chương trình nhỏ để thực yêu cầu thầy Dữ liệu: Nhập từ bàn phím hai số nguyên dương Hai số cách dấu trống dấu xuống dòng Kết quả: Ghi hình số nguyên số lượng cặp thỏa mãn yêu cầu thầy Ví dụ: Dữ liệu nhập 12 Dữ liệu xuất 14 Giải thích ví dụ: • Với giá trị hợp lệ 4, • Với giá trị hợp lệ 3, • Với giá trị hợp lệ 2,7,12 • Với giá trị hợp lệ 1,6,11 • Với giá trị hợp lệ 5, 10 • Với giá trị hợp lệ 4, Ghi chú: Bài chấm qua test, test 0,25 điểm Bài Dãy chia hết Xét dãy số vô hạn A từ dãy số nguyên dương tăng dần cách xét số tự nhiên chọn số cho dãy A theo quy tắc: chọn số nhỏ chia hết cho (hiển nhiên số 1), sau hai số nhỏ chia hết cho 2, số nhỏ chia hết cho 3, số nhỏ chia hết cho 4, số nhỏ chia hết cho 5… Như số dãy A là: 1, 2, 4, 6, 9, 12, 16, 20, 24, 28, 30, 35, 40, 45, 50, 54, … Yêu cầu: Cho số tự nhiên N Hãy xác định số thứ N dãy số Dữ liệu: File BAI4.INP Chứa số N (1≤ N ≤105) Trang: Kết quả: Ghi file BAI4.OUT số thứ N tìm Ví dụ: BAI4.INP BAI4.OUT 13 40 Ghi chú: Bài chấm qua test, test 0,25 điểm Bài Dãy nhị phân Huy vào học cấp THPT, nên Huy tiếp xúc với môn Tin học Cậu ta hào hứng môn học này, đặc biệt học dãy nhị phân (là dãy số chứa ký tự '0' ký tự '1') Tuy cậu ta không thích số có ba số liên tiếp đứng cạnh Viết chương trình đếm xem có dãy nhị phân độ dài mà ba số liên tiếp đứng cạnh nhau? Vì số lớn nên bạn cần lấy phần dư chúng chia cho 109+7 Dữ liệu: Vào từ file văn BAI5.INP • • Dòng ghi - sô lượng liệu dòng tiếp theo, dòng ghi số nguyên dương Kết quả: Ghi file văn BAI5.OUT gồm dòng, dòng kết ứng với số file liệu vào theo thứ tự Ví dụ: BAI5.INP BAI5.OUT 13 Ghi chú: Bài thi chấm test, test 0,25 điểm: • test có: • test có: • test có: Hết Thí sinh không sử dụng tài liệu; - Giám thị không giải thích thêm Trang: SỞ GIÁO DỤC VÀ ĐÀO TẠO HẢI DƯƠNG KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 12 NĂM HỌC 2016 - 2017 Môn: Tin học Thời gian làm bài: 180 phút (không kể thời gian giao đề) (Đề thi gồm 05 bài 03 trang) Ngày thi: thứ Bảy, ngày 08/10/2016 ĐÁP ÁN CHÍNH THỨC Tổng quan thi đề TT File Chương trình BAI1.* BAI2.* BAI3.* BAI4.* BAI5.* Tên VAT Xếp Đếm Dãy Dãy hàng cặp số chia hết nhị phân Dữ liệu nhập (input) bàn phím bàn phím bàn phím BAI4.INP BAI5.INP Dữ liệu xuất (output) hình hình hình BAI4.OUT BAI5.OUT Thời gian 1s 1s 1s 1s 1s Điểm 2.5 2.5 2.0 1.5 1.5 Chú ý: - Dấu * là phần mở rộng File chương trình là PAS CPP tùy theo ngôn ngữ lập trình sử dụng là Pascal C++ - Chương trình in kết theo yêu cầu đề bài, không in thông tin nào khác - Chương trình sử dụng lệnh in (write, writeln Passcal; printf (…), cout C++) để in kết - Đối với bài tập đọc và in liệu từ file văn bản, tên file này phải đặt đúng theo yêu cầu đề bài, đường dẫn phía trước Viết chương trình giải toán sau: Bài VAT Lan nhân viên công ty, Lan vừa giao nhiệm vụ mua số thiết bị để phục vụ cho phòng chức Lan nhận khoản kinh phí định để mua hàng, thiết bị Lan mua có giá khác Vì mua hàng Lan không lấy hóa đơn, nên giao bảng kê chi phí cho kế toán công ty Lan yêu cầu phải thống kê giá gốc thiết bị, chi phí thuế VAT cho thiết bị Bạn giúp Lan thống kê giá gốc thuế VAT phải nộp cho thiết bị mua, biết thiết bị Lan mua chịu mức thuế VAT 10% giá gốc Dữ liệu: Nhập từ bàn phím số nguyên N (0≤N≤109) tổng tiền mà Lan mua hàng Kết quả: In hình hai giá trị giá gốc thuế VAT, số gồm hai chữ số thập phân, cách dấu cách Ví dụ: Dữ liệu nhập Dữ liệu xuất 4.55 0.45 Thuật toán: Gọi giá gốc thiết bị x, giá trị thuế VAT y Ta có: x + y = y = x/10 Giải hệ tìm x y Bài Xếp hàng Trang: Một kho chứa hàng hình chữ nhật có chiều dài, rộng, cao d 1, r1, c1 Công ty vừa nhập lô hàng gồm hai thùng hàng có chiều dài, rộng, cao d 2, r2, c2, d3, r3, c3 Vì hàng dễ vỡ nên không xếp chồng lên mà xếp cạnh xếp trước, sau, xếp dựng đứng, cạnh thùng hàng song song với cạnh kho chứa hàng Bạn giúp chủ kho kiểm tra xem kích thước lô hàng xếp vào kho hay không? Dữ liệu: Nhập từ bàn phím lần lượt: - Dòng 1: Ba số nguyên d1, r1, c1 (0 < d1, r1, c1 < 106) - Dòng 2: Ba số nguyên d2, r2, c2; (0 < d2, r2, c2 < 106) - Dòng 3: Ba số nguyên d3, r3, c3 (0 < d3, r3, c3 < 106) Kết quả: Đưa thông báo: YES có thể; NO Ví dụ: Dữ liệu nhập 2 3 3 Dữ liệu xuất YES Thuật toán: - Nếu chiều dài, rộng, cao thùng hàng vượt chiều cao kho hàng toán vô nghiêm, kết NO - Nếu chiều dài, rộng, cao đảm thùng hàng đảm bảo toán có số cách xếp, kết YES Bài Đếm cặp số Vào toán, thầy Dũng viết hai dãy số thành hai cột bảng Cột thứ viết số nguyên từ đến cột thứ hai viết số nguyên từ đến Câu hỏi thầy Dũng sau: Hãy đếm xem có cách chọn hai số số viết cột thứ số viết cột thứ hai cho tổng với chia hết cho 5? Là học sinh giỏi tin học lớp, bạn viết chương trình nhỏ để thực yêu cầu thầy Dữ liệu: Nhập từ bàn phím hai số nguyên dương Hai số cách dấu trống dấu xuống dòng Kết quả: Ghi hình số nguyên số lượng cặp thỏa mãn yêu cầu thầy Ví dụ: Dữ liệu nhập 12 Dữ liệu xuất 14 Thuật toán: • Với giá trị hợp lệ 4, => + = / 5; + = 10 / • Với giá trị hợp lệ 3, => + = /5; + = 10 /5 • Với giá trị hợp lệ 2,7,12 => + = /5; + = 10 /5; + 12 = 15 /5 • Với giá trị hợp lệ 1,6,11 => + = /5; + = 10 /5; + 11 = 15 /5 • Với giá trị hợp lệ 5, 10 => + = 10 /5; + 10 = 15 /5; Trang: • Với giá trị Thử tất cặp tăng biến đếm Độ phức tạp hợp lệ 4, => + = 10 /5; + = 15 /5 hai vòng lặp, với cặp có Code: var n, m: longint; a, b: array[0 4] of int64; ans: int64; i: longint; BEGIN readln(n,m); for i:=0 to begin if (i>n mod 5) or (i=0) then a[i]:=n div else a[i]:=n div 5+1; if (i>m mod 5) or (i=0) then b[i]:=m div else b[i]:=m div 5+1; end; ans:=a[0]*b[0]; for i:=1 to ans:=ans+a[i]*b[5-i]; writeln(ans); END Bài Dãy chia hết Xét dãy số vô hạn A từ dãy số nguyên dương tăng dần cách xét số tự nhiên chọn số cho dãy A theo quy tắc: chọn số nhỏ chia hết cho (hiển nhiên số 1), sau hai số nhỏ chia hết cho 2, số nhỏ chia hết cho 3, số nhỏ chia hết cho 4, số nhỏ chia hết cho 5… Như số dãy A là: 1, 2, 4, 6, 9, 12, 16, 20, 24, 28, 30, 35, 40, 45, 50, 54, … Yêu cầu: Cho số tự nhiên N Hãy xác định số thứ N dãy số Dữ liệu: File BAI4.INP Chứa số N (1≤ N ≤105) Kết quả: Ghi file BAI4.OUT số thứ N tìm Ví dụ: BAI4.INP BAI4.OUT 13 40 Thuật toán: Xác định quy tắc để nhập liệu vào cho dãy A: / 1; 2,4/2; 6,9,12/3; 4,12,16,20/4; 20,30,35,40,45/5 …… Nhập số thứ tự dãy A Tìm giá trị số ứng với số thứ tự vừa nhập cách duyệt phần tử dãy A đến có số với số vừa nhập, giá trị số có vị trí duyệt số cần tìm Code: program Bai4; const tfi='bai4.inp'; tfo='bai4.out'; var Trang: n: longint; procedure main; var res, i, j, k: longint; begin assign(input,tfi); reset(input); assign(output,tfo); rewrite(output); read(n); k:=trunc((-1+sqrt(1+8.0*n))/2); if k*(k+1) div 2=n then dec(k); i:=k+1; j:=n-k*(k+1) div 2; if i=1 then res:=1 else begin res:=1; for k:=2 to i-1 res:=(res div k+k)*k; res:=(res div i+j)*i; end; writeln(res); close(input); close(output); end; BEGIN main; END Bài Dãy nhị phân Huy vào học cấp THPT, nên Huy tiếp xúc với môn Tin học Cậu ta hào hứng môn học này, đặc biệt học dãy nhị phân (là dãy số chứa ký tự '0' ký tự '1') Tuy cậu ta không thích số có ba số liên tiếp đứng cạnh Viết chương trình đếm xem có dãy nhị phân độ dài mà ba số liên tiếp đứng cạnh nhau? Vì số lớn nên bạn cần lấy phần dư chúng chia cho 109+7 Dữ liệu: Vào từ file văn BAI5.INP • • Dòng ghi - sô lượng liệu dòng tiếp theo, dòng ghi số nguyên dương Kết quả: Ghi file văn BAI5.OUT gồm dòng, dòng kết ứng với số file liệu vào theo thứ tự Ví dụ: BAI5.INP BAI5.OUT 13 Thuật toán: Trang: Thuật toán ( : Có thể thấy dãy nhị phân biểu diễn số nguyên nằm khoảng từ đến Do thuật toán đơn giản thử số nguyên từ đến với số nguyên phân tích thành số nhị phân kiểm tra xem có ba số liên tiếp hay không Nếu tăng biến đếm Hàm kiểm tra dãy bit số có bit liên tiếp hay không: function ok(x: integer): boolean; begin dem:=0; while x>0 begin if x mod 2=1 then inc(dem) else dem:=0; if dem>=3 then exit(false); x:=x div 2; end; exit(true); end; Độ phức tạp thuật toán Thuật toán 2: Đặt f[i] số dãy nhị phân bit liên tiếp độ dài Ta có công thức truy hồi sau: với Chuẩn bị trước mảng có phần tử sau truy vấn Độ phức tạp thuật toán Code: program BAI5; {$M 10000000,0,10000000} const tfi='bai5.inp'; tfo='bai5.out'; D=1000000007; var f: array[0 100000] of longint; procedure main; var i, T, n: longint; begin assign(input,tfi); reset(input); assign(output,tfo); rewrite(output); f[1]:=2; f[2]:=4; f[3]:=7; for i:=4 to 100000 begin f[i]:=(f[i-1]+f[i-2]) mod D; f[i]:=(f[i]+f[i-3]) mod D; end; read(T); for i:=1 to T Trang: begin readln(n); writeln(f[n]); end; close(input); close(output); end; BEGIN main; END Hết Trang: SỞ GIÁO DỤC VÀ ĐÀO TẠO HẢI DƯƠNG KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 12 NĂM HỌC 2016 - 2017 Môn: Tin học Thời gian làm bài: 180 phút (không kể thời gian giao đề) (Đề thi gồm 05 bài 03 trang) Ngày thi: thứ Bảy, ngày 08/10/2016 ĐỀ CHÍNH THỨC Tổng quan thi đề TT File Chương trình BAI1.* BAI2.* BAI3.* BAI4.* BAI5.* Tên VAT Bầu Đếm Dãy Dãy cử cặp số chia hết nhị phân Dữ liệu nhập (input) bàn phím bàn phím bàn phím BAI4.INP BAI5.INP Dữ liệu xuất (output) hình hình hình BAI4.OUT BAI5.OUT Thời gian 1s 1s 1s 1s 1s Điểm 2.5 2.5 2.0 1.5 1.5 Chú ý: - Dấu * là phần mở rộng File chương trình là PAS CPP tùy theo ngôn ngữ lập trình sử dụng là Pascal C++ - Chương trình in kết theo yêu cầu đề bài, không in thông tin nào khác - Chương trình sử dụng lệnh in (write, writeln Passcal; printf (…), cout C++) để in kết - Đối với bài tập đọc và in liệu từ file văn bản, tên file này phải đặt đúng theo yêu cầu đề bài, đường dẫn phía trước Viết chương trình giải toán sau: Bài VAT Lan nhân viên công ty, Lan vừa giao nhiệm vụ mua số thiết bị để phục vụ cho phòng chức Lan nhận khoản kinh phí định để mua hàng, thiết bị Lan mua có giá khác Vì mua hàng Lan không lấy hóa đơn, nên giao bảng kê chi phí cho kế toán công ty Lan yêu cầu phải thống kê giá gốc thiết bị, chi phí thuế VAT cho thiết bị Bạn giúp Lan thống kê giá gốc thuế VAT phải nộp cho thiết bị mua, biết thiết bị Lan mua chịu mức thuế VAT 10% giá gốc Dữ liệu: Nhập từ bàn phím số nguyên N (0≤N≤109) số tiền mà Lan mua thiết bị Kết quả: In hình hai giá trị giá gốc thuế VAT, số gồm hai chữ số thập phân, cách dấu cách Ví dụ: Dữ liệu nhập Dữ liệu xuất 4.55 0.45 Ghi chú: Bài chấm qua 10 test, test 0,25 điểm Bài Bầu cử: Trong bỏ phiếu bầu Bí thư đoàn trường, kết bỏ phiếu cho biết bạn An p phiếu, bạn Vinh q phiếu bạn Quang r phiếu Ai có số phiếu bầu cao làm Bí thư đoàn trường Nếu có hai bạn đạt số phiếu cao ba bạn có số phiếu phải bầu lại Là thư kí ban bầu cử, bạn viết chương trình xác định xem Bí thư đoàn, phiếu không thỏa mãn phải thông báo ‘BAU LAI’ Trang: 10 Dữ liệu: Nhập vào từ bàn phím ba số nguyên theo thứ tự p, q, r (0 ≤ p, q, r ≤103) số lượng phiếu bầu ba bạn An, Vinh, Quang, số nhập dòng cách dấu cách Kết quả: In tên bạn bầu làm Bí thư đoàn trường thông báo ‘BAU LAI’; Ví dụ: Dữ liệu nhập 14 13 15 15 15 12 Dữ liệu xuất Quang BAU LAI Ghi chú: Bài chấm qua 10 test, test 0,25 điểm Bài Đếm cặp số Vào toán, thầy Dũng viết hai dãy số thành hai cột bảng Cột thứ viết số nguyên từ đến cột thứ hai viết số nguyên từ đến Câu hỏi thầy Dũng sau: Hãy đếm xem có cách chọn hai số số viết cột thứ số viết cột thứ hai cho tổng với chia hết cho 5? Là học sinh giỏi tin học lớp, bạn viết chương trình nhỏ để thực yêu cầu thầy Dũng Dữ liệu: Nhập từ bàn phím hai số nguyên dương Hai số cách dấu cách dấu xuống dòng Kết quả: Ghi hình số nguyên số lượng cặp thỏa mãn yêu cầu thầy Ví dụ: Dữ liệu nhập 12 Dữ liệu xuất 14 Giải thích ví dụ: • Với giá trị hợp lệ 4, • Với giá trị hợp lệ 3, • Với giá trị hợp lệ 2,7,12 • Với giá trị hợp lệ 1,6,11 • Với giá trị hợp lệ 5, 10 • Với giá trị hợp lệ 4, Ghi chú: Bài chấm qua test, test 0,25 điểm đó: • test có • test có • test có Bài Dãy chia hết Xét dãy số vô hạn A từ dãy số nguyên dương tăng dần cách xét số tự nhiên chọn số cho dãy A theo quy tắc: chọn số nhỏ chia hết cho (hiển nhiên số 1), sau hai số nhỏ chia hết cho 2, số nhỏ chia Trang: 11 hết cho 3, số nhỏ chia hết cho 4, số nhỏ chia hết cho 5… Như số dãy A là: 1, 2, 4, 6, 9, 12, 16, 20, 24, 28, 30, 35, 40, 45, 50, 54, … Yêu cầu: Cho số tự nhiên N Hãy xác định số thứ N dãy số Dữ liệu: File BAI4.INP Chứa số N (1≤ N ≤105) Kết quả: Ghi file BAI4.OUT số thứ N tìm Ví dụ: BAI4.INP BAI4.OUT 13 40 Ghi chú: Bài chấm qua test, test 0,25 điểm Bài Dãy nhị phân Huy vào học cấp THPT, nên Huy tiếp xúc với môn Tin học Cậu ta hào hứng môn học này, đặc biệt học dãy nhị phân (là dãy số chứa ký tự '0' ký tự '1') Tuy cậu ta không thích số có ba số liên tiếp đứng cạnh Viết chương trình đếm xem có dãy nhị phân độ dài mà ba số liên tiếp đứng cạnh nhau? Vì số lớn nên bạn cần lấy phần dư chúng chia cho 109+7 Dữ liệu: Vào từ file văn BAI5.INP • • Dòng ghi - số lượng liệu dòng tiếp theo, dòng ghi số nguyên dương Kết quả: Ghi file văn BAI5.OUT gồm dòng, dòng kết ứng với số file liệu vào theo thứ tự Ví dụ: BAI5.INP BAI5.OUT 13 Ghi chú: Bài thi chấm test, test 0,25 điểm: • test có: • test có: • test có: Hết Thí sinh không sử dụng tài liệu; - Giám thị không giải thích thêm Trang: 12 SỞ GIÁO DỤC VÀ ĐÀO TẠO HẢI DƯƠNG KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 12 NĂM HỌC 2016 - 2017 Môn: Tin học Thời gian làm bài: 180 phút (không kể thời gian giao đề) (Đề thi gồm 05 bài 03 trang) Ngày thi: thứ Bảy, ngày 08/10/2016 ĐÁP ÁN CHÍNH THỨC Tổng quan thi đề TT File Chương trình BAI1.* BAI2.* BAI3.* BAI4.* BAI5.* Tên VAT Xếp Đếm Dãy Dãy hàng cặp số chia hết nhị phân Dữ liệu nhập (input) bàn phím bàn phím bàn phím BAI4.INP BAI5.INP Dữ liệu xuất (output) hình hình hình BAI4.OUT BAI5.OUT Thời gian 1s 1s 1s 1s 1s Điểm 2.5 2.5 2.0 1.5 1.5 Chú ý: - Dấu * là phần mở rộng File chương trình là PAS CPP tùy theo ngôn ngữ lập trình sử dụng là Pascal C++ - Chương trình in kết theo yêu cầu đề bài, không in thông tin nào khác - Chương trình sử dụng lệnh in (write, writeln Passcal; printf (…), cout C++) để in kết - Đối với bài tập đọc và in liệu từ file văn bản, tên file này phải đặt đúng theo yêu cầu đề bài, đường dẫn phía trước Viết chương trình giải toán sau: Bài VAT Lan nhân viên công ty, Lan vừa giao nhiệm vụ mua số thiết bị để phục vụ cho phòng chức Lan nhận khoản kinh phí định để mua hàng, thiết bị Lan mua có giá khác Vì mua hàng Lan không lấy hóa đơn, nên giao bảng kê chi phí cho kế toán công ty Lan yêu cầu phải thống kê giá gốc thiết bị, chi phí thuế VAT cho thiết bị Bạn giúp Lan thống kê giá gốc thuế VAT phải nộp cho thiết bị mua, biết thiết bị Lan mua chịu mức thuế VAT 10% giá gốc Dữ liệu: Nhập từ bàn phím số nguyên N (0≤N≤109) số tiền mà Lan mua thiết bị Kết quả: In hình hai giá trị giá gốc thuế VAT, số gồm hai chữ số thập phân, cách dấu cách Ví dụ: Dữ liệu nhập Dữ liệu xuất 4.55 0.45 Thuật toán: Gọi giá gốc thiết bị x, giá trị thuế VAT y Ta có: x + y = y = x/10 Giải hệ tìm x y Code: var n,g,l:real; begin Trang: 13 readln(n); g:=n*10/11; l:=n-g; write(g:0:2,' ',l:0:2); end Bài Bầu cử: Trong bỏ phiếu bầu Bí thư đoàn trường, kết bỏ phiếu cho biết bạn An p phiếu, bạn Vinh q phiếu bạn Quang r phiếu Ai có số phiếu bầu cao làm Bí thư đoàn trường Nếu có hai bạn đạt số phiếu cao ba bạn có số phiếu phải bầu lại Là thư kí ban bầu cử, bạn viết chương trình xác định xem Bí thư đoàn, phiếu không thỏa mãn phải thông báo ‘BAU LAI’ Dữ liệu: Nhập vào từ bàn phím ba số nguyên theo thứ tự p, q, r (0 ≤ p, q, r ≤103) số lượng phiếu bầu ba bạn An, Vinh, Quang, số nhập dòng cách dấu cách Kết quả: In tên bạn bầu làm Bí thư đoàn trường thông báo ‘BAU LAI’; Ví dụ: Dữ liệu nhập 14 13 15 15 15 12 Dữ liệu xuất Quang BAU LAI Thuật toán: - Nhập phần tử nguyên - So sánh phần tử, tìm max ba phần tử - Xét trường hợp với max, tồn hai giá trị max BAU LAI, tồn max công bố người trúng cử Code: Cách 1: var p,q,r: word; begin readln(p,q,r); if (p>q) and (p>r) then write('An'); if (q>p) and (q>r) then write('Vinh'); if (r>q) and (r>p) then write('Quang'); IF (p=q) and (rp) and (q>r) then max:=q; if (r>q) and (r>p) then max:=r; end; begin readln(p,q,r); Trang: 14 if p=max then write('An') else if q=max then write('Vinh') else if r=max then write('Quang') else WRITE('Bau lai'); end Bài Đếm cặp số Vào toán, thầy Dũng viết hai dãy số thành hai cột bảng Cột thứ viết số nguyên từ đến cột thứ hai viết số nguyên từ đến Câu hỏi thầy Dũng sau: Hãy đếm xem có cách chọn hai số số viết cột thứ số viết cột thứ hai cho tổng với chia hết cho 5? Là học sinh giỏi tin học lớp, bạn viết chương trình nhỏ để thực yêu cầu thầy Dữ liệu: Nhập từ bàn phím hai số nguyên dương Hai số cách dấu trống dấu xuống dòng Kết quả: Ghi hình số nguyên số lượng cặp thỏa mãn yêu cầu thầy Ví dụ: Dữ liệu nhập 12 Dữ liệu xuất 14 Thuật toán: • Với giá trị hợp lệ 4, => + = / 5; + = 10 / • Với giá trị hợp lệ 3, => + = /5; + = 10 /5 • Với giá trị hợp lệ 2,7,12 => + = /5; + = 10 /5; + 12 = 15 /5 • Với giá trị hợp lệ 1,6,11 => + = /5; + = 10 /5; + 11 = 15 /5 • Với giá trị hợp lệ 5, 10 => + = 10 /5; + 10 = 15 /5; • Với giá trị hợp lệ 4, => + = 10 /5; + = 15 /5 Thử tất cặp hai vòng lặp, với cặp tăng biến đếm Độ phức tạp có Code: var n, m: longint; a, b: array[0 4] of int64; ans: int64; i: longint; BEGIN readln(n,m); Trang: 15 for i:=0 to begin if (i>n mod 5) or (i=0) then a[i]:=n div else a[i]:=n div 5+1; if (i>m mod 5) or (i=0) then b[i]:=m div else b[i]:=m div 5+1; end; ans:=a[0]*b[0]; for i:=1 to ans:=ans+a[i]*b[5-i]; writeln(ans); END Bài Dãy chia hết Xét dãy số vô hạn A từ dãy số nguyên dương tăng dần cách xét số tự nhiên chọn số cho dãy A theo quy tắc: chọn số nhỏ chia hết cho (hiển nhiên số 1), sau hai số nhỏ chia hết cho 2, số nhỏ chia hết cho 3, số nhỏ chia hết cho 4, số nhỏ chia hết cho 5… Như số dãy A là: 1, 2, 4, 6, 9, 12, 16, 20, 24, 28, 30, 35, 40, 45, 50, 54, … Yêu cầu: Cho số tự nhiên N Hãy xác định số thứ N dãy số Dữ liệu: File BAI4.INP Chứa số N (1≤ N ≤105) Kết quả: Ghi file BAI4.OUT số thứ N tìm Ví dụ: BAI4.INP BAI4.OUT 13 40 Thuật toán: Xác định quy tắc để nhập liệu vào cho dãy A: / 1; 2,4/2; 6,9,12/3; 4,12,16,20/4; 20,30,35,40,45/5 …… Nhập số thứ tự dãy A Tìm giá trị số ứng với số thứ tự vừa nhập cách duyệt phần tử dãy A đến có số với số vừa nhập, giá trị số có vị trí duyệt số cần tìm Code: program Bai4; const tfi='bai4.inp'; tfo='bai4.out'; var n: longint; procedure main; var res, i, j, k: longint; begin assign(input,tfi); reset(input); assign(output,tfo); rewrite(output); read(n); k:=trunc((-1+sqrt(1+8.0*n))/2); if k*(k+1) div 2=n then dec(k); i:=k+1; j:=n-k*(k+1) div 2; if i=1 then res:=1 else begin Trang: 16 res:=1; for k:=2 to i-1 res:=(res div k+k)*k; res:=(res div i+j)*i; end; writeln(res); close(input); close(output); end; BEGIN main; END Bài Dãy nhị phân Huy vào học cấp THPT, nên Huy tiếp xúc với môn Tin học Cậu ta hào hứng môn học này, đặc biệt học dãy nhị phân (là dãy số chứa ký tự '0' ký tự '1') Tuy cậu ta không thích số có ba số liên tiếp đứng cạnh Viết chương trình đếm xem có dãy nhị phân độ dài mà ba số liên tiếp đứng cạnh nhau? Vì số lớn nên bạn cần lấy phần dư chúng chia cho 109+7 Dữ liệu: Vào từ file văn BAI5.INP • • Dòng ghi - sô lượng liệu dòng tiếp theo, dòng ghi số nguyên dương Kết quả: Ghi file văn BAI5.OUT gồm dòng, dòng kết ứng với số file liệu vào theo thứ tự Ví dụ: BAI5.INP BAI5.OUT 13 Thuật toán: Thuật toán ( khoảng từ đến : Có thể thấy dãy nhị phân biểu diễn số nguyên nằm Do thuật toán đơn giản thử số nguyên từ đến với số nguyên phân tích thành số nhị phân kiểm tra xem có ba số liên tiếp hay không Nếu tăng biến đếm Hàm kiểm tra dãy bit số có bit liên tiếp hay không: function ok(x: integer): boolean; begin dem:=0; while x>0 begin if x mod 2=1 then inc(dem) else dem:=0; if dem>=3 then exit(false); Trang: 17 x:=x div 2; end; exit(true); end; Độ phức tạp thuật toán Thuật toán 2: Đặt f[i] số dãy nhị phân bit liên tiếp độ dài Ta có công thức truy hồi sau: với Chuẩn bị trước mảng có phần tử sau truy vấn Độ phức tạp thuật toán Code: program BAI5; {$M 10000000,0,10000000} const tfi='bai5.inp'; tfo='bai5.out'; D=1000000007; var f: array[0 100000] of longint; procedure main; var i, T, n: longint; begin assign(input,tfi); reset(input); assign(output,tfo); rewrite(output); f[1]:=2; f[2]:=4; f[3]:=7; for i:=4 to 100000 begin f[i]:=(f[i-1]+f[i-2]) mod D; f[i]:=(f[i]+f[i-3]) mod D; end; read(T); for i:=1 to T begin readln(n); writeln(f[n]); end; close(input); close(output); end; BEGIN main; END Hết Trang: 18 [...]... Thí sinh không được sử dụng tài liệu; - Giám thị không giải thích gì thêm Trang: 12 SỞ GIÁO DỤC VÀ ĐÀO TẠO HẢI DƯƠNG KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 12 NĂM HỌC 2016 - 2017 Môn: Tin học Thời gian làm bài: 180 phút (không kể thời gian giao đề) (Đề thi gồm 05 bài trong 03 trang) Ngày thi: thứ Bảy, ngày 08/10 /2016 ĐÁP ÁN CHI NH THỨC Tổng quan về các bài thi trong đề. .. nhất định để đi mua hàng, mỗi thi t bị Lan mua có giá khác nhau Vì khi mua hàng Lan không lấy hóa đơn, nên khi giao bảng kê chi phí cho kế toán của công ty thì Lan được yêu cầu phải thống kê ra giá gốc của từng thi t bị, và chi phí thuế VAT cho từng thi t bị đó Bạn hãy giúp Lan thống kê giá gốc và thuế VAT phải nộp cho các thi t bị đã mua, biết rằng các thi t bị Lan mua đều chịu mức thuế VAT là 10%... hai sao cho tổng và với là một chia hết cho 5? Là một học sinh giỏi tin học trong lớp, bạn hãy viết một chương trình nhỏ để thực hiện yêu cầu trên của thầy Dũng Dữ liệu: Nhập từ bàn phím lần lượt hai số nguyên dương Hai số này cách nhau bởi dấu cách hoặc dấu xuống dòng Kết quả: Ghi ra màn hình một số nguyên là số lượng cặp thỏa mãn yêu cầu của thầy Ví dụ: Dữ liệu nhập 6 12 Dữ liệu xuất 14 Giải thích... file BAI4.OUT số thứ N tìm được Ví dụ: BAI4.INP BAI4.OUT 13 40 Ghi chú: Bài được chấm qua 6 test, mỗi test 0,25 điểm Bài 5 Dãy nhị phân Huy mới vào học cấp THPT, nên Huy mới được tiếp xúc với môn Tin học Cậu ta rất hào hứng về môn học này, đặc biệt là khi học về các dãy nhị phân (là các dãy số chỉ chứa ký tự '0' và ký tự '1') Tuy vậy cậu ta không thích các số có ba số 1 liên tiếp đứng cạnh nhau Viết... cặp số Vào giờ toán, thầy Dũng viết hai dãy số thành hai cột trên bảng Cột thứ nhất lần lượt viết các số nguyên từ 1 đến và cột thứ hai lần lượt viết các số nguyên từ 1 đến Câu hỏi của thầy Dũng như sau: Hãy đếm xem có bao nhiêu cách chọn hai số số được viết ở cột thứ nhất và là một số được viết ở cột thứ hai sao cho tổng và với là một chia hết cho 5? Là một học sinh giỏi tin học trong lớp, bạn hãy viết... do res:=(res div k+k)*k; res:=(res div i+j)*i; end; writeln(res); close(input); close(output); end; BEGIN main; END Bài 5 Dãy nhị phân Huy mới vào học cấp THPT, nên Huy mới được tiếp xúc với môn Tin học Cậu ta rất hào hứng về môn học này, đặc biệt là khi học về các dãy nhị phân (là các dãy số chỉ chứa ký tự '0' và ký tự '1') Tuy vậy cậu ta không thích các số có ba số 1 liên tiếp đứng cạnh nhau Viết... writeln(ans); END Bài 4 Dãy chia hết Xét một dãy số vô hạn A từ dãy các số nguyên dương tăng dần bằng cách lần lượt xét các số tự nhiên bắt đầu từ 1 và lần lượt chọn các số cho dãy A theo quy tắc: chọn một số nhỏ nhất chia hết cho 1 (hiển nhiên là số 1), sau đó là hai số nhỏ nhất chia hết cho 2, tiếp theo là 3 số nhỏ nhất chia hết cho 3, 4 số nhỏ nhất chia hết cho 4, 5 số nhỏ nhất chia hết cho 5… Như vậy... đầu từ 1 và lần lượt chọn các số cho dãy A theo quy tắc: chọn một số nhỏ nhất chia hết cho 1 (hiển nhiên là số 1), sau đó là hai số nhỏ nhất chia hết cho 2, tiếp theo là 3 số nhỏ nhất chia Trang: 11 hết cho 3, 4 số nhỏ nhất chia hết cho 4, 5 số nhỏ nhất chia hết cho 5… Như vậy các số đầu tiên của dãy A là: 1, 2, 4, 6, 9, 12, 16, 20, 24, 28, 30, 35, 40, 45, 50, 54, … Yêu cầu: Cho số tự nhiên N Hãy xác... đầu tiên của dãy A là: 1, 2, 4, 6, 9, 12, 16, 20, 24, 28, 30, 35, 40, 45, 50, 54, … Yêu cầu: Cho số tự nhiên N Hãy xác định số thứ N của dãy số Dữ liệu: File BAI4.INP Chứa duy nhất số N (1≤ N ≤105) Kết quả: Ghi ra file BAI4.OUT số thứ N tìm được Ví dụ: BAI4.INP BAI4.OUT 13 40 Thuật toán: Xác định quy tắc để nhập dữ liệu vào cho dãy A: 1 / 1; 2,4/2; 6,9 ,12/ 3; 4 ,12, 16,20/4; 20,30,35,40,45/5 …… Nhập số... màn hình một số nguyên là số lượng cặp thỏa mãn yêu cầu của thầy Ví dụ: Dữ liệu nhập 6 12 Dữ liệu xuất 14 Thuật toán: • Với các giá trị hợp lệ là 4, 9 => 1 + 4 = 5 / 5; 1 + 9 = 10 / 5 • Với các giá trị hợp lệ 3, 8 => 2 + 2 = 5 /5; 2 + 8 = 10 /5 • Với các giá trị hợp lệ là 2,7 ,12 => 3 + 2 = 5 /5; 3 + 7 = 10 /5; 3 + 12 = 15 /5 • Với các giá trị hợp lệ là 1,6,11 => 4 + 1 = 5 /5; 4 + 6 = 10 /5; 4 + 11 =

Ngày đăng: 25/11/2016, 15:05

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan