Đề thi chọn học sinh giỏi Tin học Lớp 9 - Năm học 2013-2014 - Sở GD&ĐT Ninh Bình (Có hướng dẫn chấm)

doc6 trang | Chia sẻ: Mạnh Khải | Ngày: 14/04/2025 | Lượt xem: 10 | Lượt tải: 0download
Bạn đang xem nội dung Đề thi chọn học sinh giỏi Tin học Lớp 9 - Năm học 2013-2014 - Sở GD&ĐT Ninh Bình (Có hướng dẫn chấm), để tải tài liệu về máy bạn hãy click vào nút TẢI VỀ
 SỞ GD&ĐT NINH BÌNH ĐỀ THI CHỌN HỌC SINH GIỎI LỚP 9 THCS
 Năm học 2013 – 2014
 ĐỀ THI CHÍNH THỨC
 MÔN: TIN HỌC
 Ngày thi: 15/3/2014
 (Thời gian 150 phút không kể thời gian phát đề)
 Đề thi gồm 03 câu, trong 02 trang
Yêu cầu kỹ thuật: 
 * Các file chương trình và file dữ liệu được đặt tên chính xác như sau:
 Câu File bài làm Dữ liệu vào Dữ liệu ra Time
 Câu 1. BỘI SỐ boiso.pas boiso.inp boiso.out 2s
 Câu 2. PHẦN TỬ YÊN NGỰA yenngua.pas yenngua.inp yenngua.out 2s
 Câu 3. ĐỘ CAO docao.pas docao.inp docao.out 2s
Câu 1. BỘI SỐ (6 điểm):
 Cho số nguyên dương N. Hãy tìm số nguyên dương M nhỏ nhất (1<= M 
<=2.109) là bội số của N sao cho biểu diễn của M trong hệ thập phân chỉ chứa các 
chữ số 0 và 1.
Dữ liệu vào: file boiso.inp chứa số nguyên dương N.
Dữ liệu ra: file boiso.out ghi số nguyên dương M, nếu không có M thỏa mãn điều 
kiện 1 <= M <= 2.109 thì ghi 0.
Ví dụ:
 boiso.inp boiso.out
 25 100
 900 0
Câu 2. PHẦN TỬ YÊN NGỰA (8 điểm):
 Cho mảng A kích thước M x N (trong đó: M là số lượng hàng, N là số lượng 
cột). Phần tử A ij (hàng i, cột j) được gọi là phần tử yên ngựa nếu nó là phần tử nhỏ 
nhất trong hàng của nó và đồng thời là phần tử lớn nhất trong cột của nó.
Ví dụ trong mảng sau đây:
 15 3 9
 55 4 6
 76 1 2
thì phần tử A22 chính là phần tử yên ngựa.
Yêu cầu: Hãy viết chương trình pascal kiểm tra xem mảng A có bao nhiêu phần tử 
yên ngựa.
Dữ liệu vào: file yenngua.inp :
 Dòng thứ nhất chứa hai số nguyên M, N cách nhau một khoảng trắng (1<M, 
N<1000).
 M dòng tiếp theo mỗi dòng chứa N số nguyên mỗi số cách nhau ít nhất một 
khoảng trắng.
 1 Các phần tử trong mảng là các số nguyên dương không vượt quá 32000.
Dữ liệu ra: file yenngua.out ghi số lượng phần tử yên ngựa có trong mảng.
Ví dụ:
 yenngua.inp yenngua.out
 3 3 1
 15 3 9
 55 4 6
 76 1 2
 3 4 0
 10 3 9 11
 20 7 6 15
 30 8 5 18
Câu 3. ĐỘ CAO (6 điểm):
 Ta gọi độ cao h của một số là tổng các chữ số có trong số đó. Cho một số 
nguyên dương N, ta tạo ra một số nguyên N1 bằng cách viết liên tiếp các số nguyên 
từ 1 đến N. 
Yêu cầu: 
 Hãy đếm xem trong N1 có bao nhiêu số N2 có cùng độ cao h cho trước. Biết 
N2 được tạo ra bởi dãy các chữ số liên tiếp từ vị trí i đến vị trí j trong số nguyên N1 
(i<= j).
Giới hạn: 1<= N <= 255, 1 <= h <= 103
Dữ liệu vào: file docao.inp trong đó:
 - Dòng 1 chứa số nguyên dương N.
 - Dòng 2 chứa số nguyên dương h.
Dữ liệu ra: file docao.out chứa một số là số lượng các số nguyên N2 có độ cao h.
Ví dụ: 
 Với N = 8, h = 9 thì: N1=12345678, có 2 số N2 có độ cao h=9 là: 234, 45
 (vì 2 + 3 + 4 = 4 + 5 = 9).
 Với N = 15, h = 15 thì: N1 = 123456789101112131415, có 8 số N2 có độ cao 
h = 15 là: 12345, 456, 78, 9101112, 1011121314, 0111213141, 111213141, 131415. 
 docao.inp docao.out
 10 3
 9
 15 8
 15
 HẾT
Họ và tên thí sinh :....................................................... Số báo danh .............................
Họ và tên, chữ ký: Giám thị 1:..........................................................................
 Giám thị 2:..........................................................................
 2 SỞ GD&ĐT NINH BÌNH HDC ĐỀ THI CHỌN HSG LỚP 9 THCS
 Năm học 2013 – 2014
 MÔN: TIN HỌC
 (hướng dẫn chấm gồm 4 trang)
 Chấm bằng phần mềm Themis: 
 Câu Chương trình nguồn Điểm
Câu 1: program BOI_SO; ( 6 điểm) 
 Bội số const fi='BOISO.INP'; 12 test 
 mỗi test 
 fo='BOISO.OUT'; 0,5 điểm
 var n:longint;
 f:text;
 procedure nhap;
 begin
 assign(f,fi); reset(f);
 read(f,n);
 close(f);
 end;
 procedure xuli;
 var found:boolean;
 i,b : longint;
 begin
 found := true;
 i := 0;
 while found do
 begin
 inc(i);
 b := n * i;
 if n * i > 2000000000 then break;
 while (((b mod 10 = 0 ) or (b mod 10 = 1 )) and (b <> 0)) do
 b := b div 10;
 if b = 0 then found := false;
 end;
 assign(f, fo);
 3 rewrite(f);
 if n*i < 2000000000 then write(f,n*i) else write(f,0);
 close(f);
 end;
 begin
 nhap;
 xuli;
 end.
 Câu 2 Program YEN_NGUA; (8 điểm) 
 Phần tử Var a:array[1..1000,1..1000] of Integer; cho 16 
yên ngựa test mỗi 
 M,N,i,j,dem:Integer; test 0,5 
 ok:boolean; điểm
 f : text;
 Function Max(j:Integer):Integer;
 Var tg,i:Integer;
 Begin
 tg:=a[1,j];
 For i:=2 to M do
 If tg<a[i,j] then tg:=a[i,j];
 Max:=tg;
 End;
 Function Min(i:Integer):Integer;
 Var tg,j:Integer;
 Begin
 tg:=a[i,1];
 For j:=2 to N do
 If tg>a[i,j] then tg:=a[i,j];
 Min:=tg;
 End;
 Begin
 assign(f,'yenngua.inp');
 4 reset(f);
 Readln(f,m,n);
 For i:=1 to M do
 For j := 1 to N do
 Read(f,a[i,j]);
 close(f);
 dem:= 0;
 assign(f,'yenngua.out');
 rewrite(f);
 For i:= 1 to M do
 For j:= 1 to N do
 If (a[i,j]=Max(j)) and (a[i,j]=Min(i)) then dem:= dem + 1;
 Write(f, dem);
 close(f);
 End.
 Câu 3 Program DO_CAO; (6 điểm)
Độ cao Var k,n,i,j,dem:longint; 12 test 
 s,st:ansistring; mỗi test 
 cho 0,5 
 fi,fo:text; điểm
 function taoxau(k:longint):ansistring;
 var st,q:ansistring;
 i:longint;
 begin
 st:='';
 for i:=1 to n do
 begin
 str(i,q);
 st:=st+q;
 end;
 taoxau:=st;
 end;
 5 function docao(x:ansistring):longint;
var k,i,w:longint;
begin
 k:=0;
 for i:=1 to length(x) do
 k:=k+(ord(x[i])-48);
 docao:=k;
end;
begin
 assign(fi,'bai3.inp6');
 reset(fi);
 assign(fo,'Bai3.out6');
 rewrite(fo);
 readln(fi,n);
 readln(fi,k);
 s:=taoxau(n);
 dem:=0;
 n:=length(s);
 for i:=1 to n do
 for j:=1 to n-i+1 do
 begin
 st:=copy(s,i,j);
 if docao(st)=k then inc(dem);
 end;
 write(fo,dem);
 close(fi);
 close(fo);
end.
 --------------- Hết---------------
 6

File đính kèm:

  • docde_thi_chon_hoc_sinh_gioi_tin_hoc_lop_9_nam_hoc_2013_2014_so.doc
  • docTIN_HDC_HSG9_2013-2014.doc
Bài giảng liên quan