SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI LỚP 12 ĐĂKNÔNG NĂM HỌC: 2006-2007 MÔN : TIN HỌC Khóa ngày 20 tháng 12 năm 2006 Thời gian 180 phút ( Không kể thời gian giao đề) Yêu cầu chung: • Chương trình trình bày đẹp có cấu trúc rõ ràng mạch lạc. • Thuật tóan đúng, có sử dụng chương trình con. • Test cho kết quả đúng: Cho điểm tối đa ứng với mỗi bài. Bài 1 : (8 điểm) 1.Thang điểm viết được hàm hoàn thiện 3 điểm viết được hàm đọc tệp,ghi tệp 3 điểm Thuật toán tối ưu 2 điểm 2. Chương trình tham khảo Program kiemhoanthien; uses wincrt; var n,k,dem:longint; a:array[1 1000]of longint; f:text; {========================================================} function hoanthien(x:longint):boolean; var sum,i:longint; begin hoanthien:=false; if odd(x) then exit; sum:=1; for i:=2 to X div 2 do if (x mod i)=0 then sum:=sum+i; if sum=x then hoanthien:=true; end; Procedure Doc; var i:integer; begin assign(f,'HT.INP'); {$I-} Reset(f);{$I+} if IOResult<>0 then begin writeln('loi khi doc file'); readln; halt; end; readln(f,n); for i:=1 to n do begin read(f,a[i]); ĐÁP ÁN 1A end; Close(f); end; {=============================================================} Procedure xuly; var i,j,dem:longint; begin assign(f,'HT.OUT'); rewrite(f); For i:=1 to n do if hoanthien(a[i])=true then writeln(f,a[i],' la so hoan thien '); Close(f); end; {======================================================} BEGIN doc; xuly; END. Bài 2 : (12 điểm) 1.Thang điểm Đọc tệp 3 điểm xuất tệp 3 điểm Xử lý 4 điểm Thuật toán tối ưu 2 điểm 2. Chương trình tham khảo Bài giải tham khảo: Program duongditamgiac; {ta dung mang b[i,j] de luu do dai duong di tu diem xuat phat (1,1) den dich la (i,j) tu o (i,j) ta co the den o (i+1,j) hoac (i+1,j+1) dung phuong phap vet can, va huong dich ta tinh duoc do dai duong di tu (1,1) den dich la (N,j) (1<=j<=N) tuc la cac gia tri b[n,1],b[n,2],b[n,3] b[n,n] sau do tim gia tri lon nhat cua day nay in ra man hinh} uses crt; const max=100; var N,i,j,k:byte; a:array[1 100,1 100]of byte; b:array[1 100,1 100] of word; f:text; Procedure nhap; begin assign(f,'TAMGIAC.INP'); {$I-} Reset(f);{$I+} if IOResult<>0 then begin writeln('loi khi doc file'); readln; halt; end; readln(f,n); fillchar(a,sizeof(a),0); for i:=1 to n do begin for j:=1 to i do read(f,a[i,j]); readln(f); end; Close(f); end; Procedure xuly; begin B[1,1]:=a[1,1]; For i:=2 to n do begin for j:=1 to i-1 do for k:=0 to 1 do begin if (b[i,j+k]=0) or (b[i-1,j]+a[i,j+k]>b[i,j+k])then b[i,j+k]:=b[i-1,j]+a[i,j+k]; end; end; j:=0; for i:=1 to N do if j<b[N,i] then j:=b[N,i]; writeln(j); end; BEGIN Fillchar(b,sizeof(b),0); nhap; xuly; readln; END. Hết SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI LỚP 12 ĐĂKNÔNG NĂM HỌC: 2006-2007 MÔN : TIN HỌC Khóa ngày 20 tháng 12 năm 2006 Thời gian 180 phút ( Không kể thời gian giao đề) Yêu cầu chung: • Chương trình trình bày đẹp có cấu trúc rõ ràng mạch lạc. • Thuật tóan đúng, có sử dụng chương trình con. • Test cho kết quả đúng: Cho điểm tối đa ứng với mỗi bài. Bài 1 : (8 điểm) 1.Thang điểm Đọc ghi tệp 2 điểm Xử lý thuật toán 4 điểm Thuật toán tối ưu 2 điểm 2. Chương trình tham khảo Program DUONGTHANG; uses wincrt; var f:text; a,b,c,m,n,p:Real; SS,Tr,Cat: Boolean; begin assign(f,'DTINP.TXT'); {$I-}reset(f);{$I+} if ioresult<>0 then begin write('khong mo duoc tep'); halt; end; read(f,a,b,c); readln(f); read(f,m,n,p); close(f); if (sqr(a)+sqr(b)=0)or (sqr(m)+sqr(n)=0)then begin write('Du lieu khong hop le!'); halt; end; Tr:= (a*n = b*m)and(a*p = c*m); SS:= (a*n = b*m)and(a*p <> c*m); Cat:= (a*n <> b*m); assign(f,'DTOUT.TXT'); rewrite(f); If Tr then write(f,'Hai duong thang trung nhau'); If SS then write(f,'Hai duong thang song song'); If Cat then write(f,'Hai duong thang cat nhau'); ĐÁP ÁN 1B close(f); end. Bài 2: (12 điểm) 1.Thang điểm Tạo thủ tục đọc 2 điểm Thủ tục xử lý thuật toán 8 điểm Thuật toán tối ưu 2 điểm 2. Chương trình tham khảo Program quanhehocsinh; uses wincrt; var n,i:integer; a:array[1 100,1 100]of integer; ph:array[1 100]of integer; f:text; {========================================================} Procedure Doc; var i,j:integer; begin assign(f,'QHHS.INP'); {$I-} Reset(f);{$I+} if IOResult<>0 then begin writeln('loi khi doc file'); readln; halt; end; readln(f,n); for i:=1 to n do begin for j:=1 to n do read(f,a[i,j]); readln(f); end; Close(f); end; {=============================================================} Procedure tieptuc(i,k:integer); var j:integer; begin For j:=1 to n do if a[i,j]<>0 then if ph[j]=0then begin ph[j]:=k; tieptuc(j,3-k); end else if ph[j]=3-k then begin write(f,'KHONG THE XEP 2 PHONG'); Close(f); Halt; end; end; {==============================================================} Procedure chon; var i,j:integer; begin for i:=1 to n do ph[i]:=0; for i:=1 to n do if ph[i]=0 then begin ph[i]:=1; tieptuc(i,2); end; end; {======================================================} BEGIN Doc; assign(f,'QHHS.OUT'); REWRITE(f); chon; for i:=1 to n do if ph[i]=1 then write(f,i,' '); writeln(f); For i:=1 to n do if ph[i]=2 then write(f,i,' '); close(f); END. Hết . xuat phat (1, 1) den dich la (i,j) tu o (i,j) ta co the den o (i +1, j) hoac (i +1, j +1) dung phuong phap vet can, va huong dich ta tinh duoc do dai duong di tu (1, 1) den dich la (N,j) (1& lt;=j<=N) tuc. gia tri b[n ,1] ,b[n,2],b[n,3] b[n,n] sau do tim gia tri lon nhat cua day nay in ra man hinh} uses crt; const max =10 0; var N,i,j,k:byte; a:array [1 100 ,1 100]of byte; b:array [1 100 ,1 100] of word; . i: =1 to n do begin for j: =1 to i do read(f,a[i,j]); readln(f); end; Close(f); end; Procedure xuly; begin B [1, 1]:=a [1, 1]; For i:=2 to n do begin for j: =1 to i -1 do for k:=0 to 1 do